2012-01-31 177 views
2
<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位数的too.please告诉我错误在哪里。任何帮助非常感谢。谢谢onclick事件不会触发

回答

2

它看来,如果你把它叫做其他的东西比accept工作:

http://jsfiddle.net/Bt5Q3/

+0

它的工作,但IAM好奇知道为什么函数accept()在这里被忽略? – niko 2012-01-31 14:09:00

+0

+1找到解决方案:) – niko 2012-01-31 14:12:49

5

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

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

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

+0

感谢+1解释我的接受方法 – niko 2012-01-31 14:12:16

1

你应该用另一个名字来调用函数。

“接受”是所有HTML输入的属性。所以,当你调用accept时,它试图访问该属性,并且不能将其作为函数调用。这对我来说是一种奇怪的新行为。但测试它,如果你把

onclick="value = 'test';" 

你会看到,当你点击它,按钮的值将变为“测试”

有人可以解释以规范为背景这种行为?

1

由于标记INPUT本身具有accept属性,因此不能将名称accept用作javascript函数。 javascript试图访问INPUT-tag的ACCESS属性。 将你的函数重命名为别的东西会使它工作。

看到这个小提琴:

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

祝你好运!