2012-12-10 79 views
1

我正在使用一些Javascript和Ajax函數。我打算寫一些代碼,而我自己解釋清楚。onclick函數在沒有任何點擊的情況下執行javascript

我有這樣的元素:<div id="divTest" onclick="test()">YES</div>

當用戶單擊DIV,功能取代了「YES」這樣的事情:

YES <input type="radio" name="testing" value="YES" onclick="test_2(this.value)" checked /> 
NO <input type="radio" name="testing" value="NO" onclick="test_2(this.value)" /> 

這允許用戶再次選擇正確的選擇。然後,我想用新值替換單選按鈕,因此當用戶選擇任何選項時,DIV將替換「單選」選項並顯示選定的值(是或否),因爲它是在開始時。

在這一點上一切正常完美。

這裏是我的問題:

我希望DIV有onclick()作爲的遊戲內onclick="test()"所以我這樣做,從JavaScript給它的屬性是這樣的:div.onclick = function() { test();};。即使用戶沒有點擊div,功能test()也會執行。它立即執行這兩個功能,並且不會等到它點擊它。

有沒有人知道我該如何讓該功能等待,直到有任何點擊它?我是否錯誤地給onclick屬性?

我希望我明確自己。 (對不起,我的英語)

下面是功能

function test() { 
    var div = document.getElementById("divTest"); 
    //I DO NOT INCLUDE THE AJAX CODE BUT THE RESPONSE INCLUDE THE RADIO BUTTONS METIONED ABOVE 
    div.innerHTML = xml.responseText(); 
} 


function test_2(newValue) { 
    div = document.getElementById("newValue"); 
    div.innerHTML = newValue; 
    div.onclick = function() { test(); }; 
} 
+0

你可以在http://jsfiddle.net上進行演示嗎? – Sampson

回答

2

是的,你的問題是與div.onclick =這裏你實際上指定點擊動作到您的div!當你的頁面加載時,它將執行。

你想要的就是像這樣分配一個事件監聽器。

div.addEventListener('click' function(){}); 
+1

@mauguerra然後你將不得不發佈像喬納森說的jsfiddle。因爲代碼中的某些內容已關閉。以上應該工作。 – Ryan

0

我有同樣的問題,我發現這個網頁。我檢查了addEventListener的規格,發現我輸入了一對過多的括號。


兩種方法可以做到這一點:
1.使用匿名函數(即沒有名字,只是在時間使用規定),如上面的回答。
2.您不能添加括號。只需使用('點擊',myfunction)。

如果您想使用參數,請將您的函數包裝爲匿名函數。像這樣: div.addEventListener('click',function(){myfunction(e){}})。

這有點晚了,希望你能閱讀並解決你的問題。

+0

我已經編輯了您的答案的格式和措辭。我認爲你最後的代碼位缺少右括號。 –

+0

第一次回答問題。謝謝,並且括號已被添加 – miehmg

+0

呃,並且您已經刪除了我所有的格式... –

相關問題