【发布时间】:2015-02-18 00:07:39
【问题描述】:
我有一个 for 循环,它创建 div-elements,其 ID 为“category1”、“category2”等。循环通过一个键/值数组,如下所示:
"0" : "Java",
"1" : "JavaScript",
"2" : "HTML"
所以,div 的 ID 是 'category' + key。
在将元素添加到容器 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 仅适用于数组中的最后一个元素。如果我检查 Safari 调试器并输入“category3.onclick”,它会显示为空。如果我输入“category4.onclick”(这是最后一个),它会返回正确的函数。
这怎么可能?又该如何解决呢?
【问题讨论】:
-
调试工具中渲染出来的html是什么样子的?
-
只是普通的 div,正如您对代码所期望的那样。
标签: javascript html arrays