2012-01-31 342 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/

祝你好運!