JavaScript不在一个站点上工作,但在另一个站点上工作正常

时间:2013-10-27 10:32:03

标签: javascript

这就是为什么我一直讨厌Javascript,因为它总是做这样奇怪的事情...我在脚本中添加了这个精确的代码而没有一个问题,然后我将EXACT代码粘贴到另一个中,它根本不起作用。太令人沮丧了。这是代码有什么问题吗?此外,如果您可以通过elementID而不是表单名称来使其工作,那将非常感谢

<script language="javascript" type="javascript">
<!-- 
function randomPassword(length)
{
chars = "abcdefghijklmnopqrstuvwxyz!@#$%^&*()-+<>ABCDEFGHIJKLMNOP1234567890";
    pass = "";
for(x=0;x<length;x++)
{
     i = Math.floor(Math.random() * 67);
     pass += chars.charAt(i);
}
return pass;
}

function formSubmit()
{
    myform.row_password.value = randomPassword(myform.length.value);
    return false;
}
// -->
</script>


<form name="myform" method="post" action="">
  <table width="100%" border="0">
    <tr>
      <td width="120">Username:</td>
      <td><input name="update_username" type="text" value="" size="40"></td>
    </tr>
    <tr>
      <td>Password:</td>
      <td><input name="row_password" type="text" size="40"> &nbsp; <input type="button"         class="button" value="Generate" onClick="javascript:formSubmit();" tabindex="2"></td>
    </tr>
  </table>
</form>

3 个答案:

答案 0 :(得分:1)

已移除javascript:已添加document.myform并已更改... randomPassword(myform.update_username.value.length);现在似乎正常工作...... JS Bin Demo

function randomPassword(length)
{
chars = "abcdefghijklmnopqrstuvwxyz!@#$%^&*()-+<>ABCDEFGHIJKLMNOP1234567890";
    pass = "";

for(x=0;x<length;x++)
{
     i = Math.floor(Math.random() * 67);
     pass += chars.charAt(i);
}
return pass;
}

function formSubmit()
{
document.myform.row_password.value = randomPassword(myform.update_username.value.length);
    return false;
}

答案 1 :(得分:0)

formSubmit中的代码期望表单的名称为passform。相应地更改表单,或更改代码以使用myform而不是passform

或者,您可以更改代码以将表单作为参数:

function formSubmit(frm) {
  frm.row_password.value = randomPassword(myform.length.value);
  return false;
}

然后使用:

调用它
onclick="formSubmit(this.form);"

您在表格中缺少名为length的字段:

<input type="hidden" name="length" value="10">

演示:http://jsfiddle.net/Guffa/DDn6W/

附注:将代码放入事件属性时,请勿使用javascript:。这仅在您将代码放入href属性时使用。请勿在{{1​​}}标记内使用<!---->。这是一个古老的结构,可以防止代码在不知道script标记的浏览器中显示在页面中。那些不再存在。

答案 2 :(得分:0)

passform.row_password.value正在寻找名为“passform”的表单,但在此代码中您有<form name="myform">

在任何情况下,这都是一种过时且可能有害的访问元素的方式 - 但是,从您仍然使用HTML注释来隐藏代码到“旧”浏览器的事实来判断,我怀疑你是否已经选择了来自这个里程碑的JavaScript书:p

您的randomPassword功能正常,但在几个方面更改formSubmit错误。

  • 除了访问错误的表单外,它还试图访问一个名为“length”的字段,该表格中没有该字段。
  • 您应该为要在JavaScript中访问的元素分配ID,并使用document.getElementById('someID')来获取它们。
  • 您实际上并未在任何地方呼叫formSubmit。您是否有onClickonSubmit事件处理程序?