onclick事件未触发

时间:2012-01-31 13:59:57

标签: javascript

<script type="text/javascript">
 function accept(s)
  {
    alert(s);
  }
 </script>

<input type="button" style="background-color:#e2e6f0;border:1px solid 
#DCDCDC;padding-left:5px;padding-right:5px;padding-top:3px;padding-bottom:3px" 
value="accept" onclick="accept('28391135292739653997')">

为什么onclick事件不会触发accept函数?我希望它可以工作。我认为它可能是由于数字的数字,但它在我的样本中工作,我也使用了30位数。请告诉我错误在哪里。非常感谢任何帮助。谢谢

4 个答案:

答案 0 :(得分:5)

这是因为accept是input元素属性的名称。所以onclick事件试图将accept属性作为一个方法,而不是你定义的accept函数。如果您将其更改为:

onclick="window.accept('28391135292739653997')"

它将调用全局定义的接受函数。

答案 1 :(得分:2)

如果您将其称为accept以外的其他内容,则似乎有效:

http://jsfiddle.net/Bt5Q3/

答案 2 :(得分:1)

您应该使用其他名称调用该函数。

'accept'是所有HTML输入的属性。因此,当您调用accept时,它会尝试访问该属性,并且无法将其作为函数调用。这对我来说是一种奇怪的新行为。但是测试它,如果你把

onclick="value = 'test';"

你会看到当你点击它时,按钮的值将变成'test'

有人可以用规范作为背景来解释这种行为吗?

答案 3 :(得分:1)

您不能将名称accept用作javascript函数,因为标签INPUT本身具有accept属性。 javascript正在尝试访问INPUT标记的ACCESS属性。 将您的功能重命名为其他功能将使其正常工作。

看到这个小提琴:

http://jsfiddle.net/W9VND/28/

祝你好运!