【发布时间】:2011-12-26 07:49:43
【问题描述】:
我有以下一小段代码:
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
标签: javascript dom javascript-events