我有一个for循环,创建div
-id元素,如'category1','category2'等。循环遍历一个键/值数组,如下所示:动态创建元素并添加onclick事件不起作用
"0" : "Java",
"1" : "JavaScript",
"2" : "HTML"
所以,div的ID是'category'+键。
在将元素添加到容器div的innerHTML
的for循环中,我添加了一个onclick
-event。
这是for循环,我说的是:
for (var key in categories) {
categoriesBlock.innerHTML += '<div class="category" id="category' + key + '">' + categories[key] + '</div>';
document.getElementById('category' + key).onclick = function() { showPostsForCategory(key, categories[key]); }
}
其中categories
是上述阵列。
问题是,onclick
只适用于数组中的LAST元素。如果我使用Safari调试器进行检查并键入“category3.onclick”,它将显示为空。如果我输入“category4.onclick”(这是最后一个),它将返回正确的功能。
这怎么可能?以及如何解决它?
调试工具中呈现的html看起来像什么? – Dragony 2015-02-18 00:17:03
正如你期望的那样,只需要正常的div。 – JeroenJK 2015-02-18 06:37:20