【发布时间】:2011-11-10 10:41:07
【问题描述】:
我使用以下函数将某个类的所有成员绑定到更改当前页面的函数。函数如下:
function _bind_menu_items() {
var menuItems = fja.getElementsByClass("menuItem"),
index,
elementID,
divIdToBind;
for (index in menuItems) {
elementID = menuItems[index].id;
divIdToBind = elementID.replace("Item", "");
menuItems[index].onclick = function() {
fja.menu.changeActivePage(divIdToBind);
};
}
}
我已经检查了一切都按预期工作,直到 onclick 属性的实际分配。我得到的错误是属于 menuItem 类的每个 div 似乎都调用了相同的 onclick 函数......好像 divIdToBind 字符串对于分配的每个 onclick 都是完全相同的......我该如何解决这个问题?
【问题讨论】:
-
您的所有点击事件处理程序都引用相同的
divIdToBind变量(您正在循环中创建一个函数)。这是一个相当普遍的问题。搜索 javascript loops closures 并查看 Closures for Dummies(示例 5) -
@Thilo:感谢您找到这个。我一直在寻找这种情况的良好副本。这个好像够用了。
标签: javascript