我有以下的小片的代碼:爲什麼onclick的處理函數不能按預期工作?
var instance = this;
window.onload = function() {
for (var i = 0; i < array.length; ++i) {
var currentDivId= array[i];
var currentDiv = document.getElementById(currentDivId);
try {
if (!currentDiv) {
throw 'Div id not found: ' + currentDivId;
}
var image = document.createElement('img');
image.src = 'img.jpg';
image.onclick = function() {
instance.doSomething(currentDivId);
};
currentDiv.appendChild(image);
}
catch(e) {
console.warn('oops');
}
}
};
此代碼被傳遞的div的ID的數組。它所做的是,它在每個div上呈現圖像並設置其onclick屬性。
說我有一個字符串數組:['abc', 'xyz']
我想要的代碼放置內<div id="abc"></div>
圖像和內部<div id="xyz"></div>
另一個圖像。
當您單擊第一個圖像時,應使用參數'abc'
調用instance.doSomething
函數,反之亦然。
但代碼無法正常工作。它總是調用instance.doSomething
與數組中的最後一個參數,在這種情況下,'xyz'
。
我是JS的新手,仍然沒有紮實地掌握其內部工作。這裏有什麼問題,我該如何解決?
任何幫助表示讚賞。謝謝。
我認爲你必須在'for'循環中寫'i ++'而不是'++ i' – diEcho 2011-12-26 07:56:18
@diEcho它有什麼關係? – 2011-12-26 08:00:21