2012-05-08 127 views
0

我正在創建動態複選框,並附帶onclick事件。以下是代碼:複選框onclick不在IE8中工作,但在IE9中工作

var table = document.getElementById(tableID); 
var rowCount = table.rows.length; 
var row = table.insertRow(rowCount); 

var cell1 = row.insertCell(0); 
var checkbox = document.createElement("input"); 
checkbox.type = 'checkbox'; 
checkbox.onclick = testClick(); 
cell1.appendChild(checkbox); 

function testClick() { 
      alert("Hello"); 
} 

上面的一段代碼可以正常使用IE9,但不能使用IE8。我正在使用Jquery 1.7.1。

任何幫助將不勝感激。謝謝..

回答

3

如果您正在使用jQuery,爲什麼不利用呢?這需要照顧跨瀏覽器問題

$(domElement).click(function(){ 
    // do your thing here 
}); 
+0

雖然jQuery並沒有處理語法錯誤......但是清楚地將函數的返回值作爲回調函數不是要走的路 –

+0

@EliasVanOotegem雖然在一個匿名函數中包裝函數調用會照顧到這一點。 –

+0

是的,但這有點矯枉過正,不是嗎?創建一個匿名回調,因爲它只是調用一個函數,而不是擊敗回調點,在我看來:P –

3

你需要傳遞函數處理,而不是函數調用onclick屬性:

checkbox.onclick = testClick; 
+0

謝謝,這是工作(意味着我現在沒有在IE8中的任何錯誤),但在testClick方法我有一個警報,在IE9但未在IE8罰款。 –

+0

我已經爲你製作了jsFiddle演示http://jsfiddle.net/5yq6X/在IE8中試用這個 – antyrat

相關問題