У меня есть следующий маленький кусочек кода:
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.Что он делает, так это то, что он рендерит изображение в каждом из этих элементов div и устанавливает их свойство onclick.
Скажем, у меня есть массив строк: ['abc', 'xyz']
Я хочу, чтобы код поместил изображение внутри <div id="abc"></div>
, а другое изображение внутри <div id="xyz"></div>
.
КогдаЕсли щелкнуть первое изображение, необходимо вызвать функцию instance.doSomething
с параметром 'abc'
и наоборот.
Но код работает не так, как ожидалось.Он всегда вызывает instance.doSomething
с последним параметром в массиве, в этом случае, 'xyz'
.
Я новичок в JS и до сих пор не понимаю его внутреннюю работу.Что здесь не так и как я могу это исправить?
Любая помощь приветствуется.Спасибо.