JavaScript不能在一个网站上工作,但在另一个网站上很好

JavaScript not working on one site but fine on the other

本文关键字:网站 工作 另一个 很好 一个 不能 JavaScript      更新时间:2023-09-26

这就是为什么我一直讨厌Javascript,因为它总是做这样奇怪的事情......我在脚本中添加了这个 EXACT 代码,没有一个问题,然后我将 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>

删除javascript:添加document.myform并更改... randomPassword(myform.update_username.value.length);现在似乎有效... JS斌演示

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;
}

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

无论如何,这是一种过时且可能有害的元素访问方式 - 不过,从您仍在使用 HTML 注释来隐藏"旧"浏览器的代码这一事实来看,我怀疑您是否从这个千年:p中拿起了一本 JavaScript 书

您的randomPassword功能很好,但更改formSubmit在几个方面是错误的。

  • 除了访问错误的表单之外,它还尝试访问一个名为"长度"的字段,该字段在此表单中不存在。
  • 你应该为你想要在 JavaScript 中访问的元素分配 ID,并使用 document.getElementById('someID') 来获取它们。
  • 你实际上并没有在任何地方打电话给formSubmit。您是否有onClickonSubmit事件处理程序?

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 属性时,才会使用此方法。请勿在 script 标记中使用<!---->。这是一个古老的结构,用于防止代码显示在不知道script标签用途的浏览器中的页面中。这些已经不存在了。