【发布时间】:2013-07-08 13:35:52
【问题描述】:
我从未使用过addEventListener(),但我无法为每个<div> 编写我想要的HTML 等效项,因为我生成内容的方式我将其视为一个按钮。相当于:
<div onmousedown="jsItems[someId].toggleImage(someGallery, someIndex);"></div>
我一直在尝试的是:
JsTree.prototype.addGalleries = function(inElements) {
// ...unrelated code here removed for StackOverflow...
for (var i = 0; i < this.jsGalleries.length; i++) {
for (var j = 0; j < this.jsGalleries[i].buttons.length; j++) {
var self = this;
this.jsGalleries[i].buttons[j].addEventListener("mousedown", function() {
self.toggleImage(i, j);
});
}
}
}
其中i 从 0 计数到 1,j 从 0 计数到 2(在这种情况下,i),i 表示 someGallery,j 表示 someIndex,而 I可以在上面的代码中使用this.id 访问someId(或在addEventListener 的函数中使用self.id)。
问题在于,尽管点击这些“按钮”之一 (<div>s) 会触发:
JsTree.prototype.toggleImage = function(inGallery, inIndex) {
alert(this.id+", "+inGallery+", "+inIndex);
}
无论单击哪个按钮,它都会始终提示“8、2、3”。 “8”是正确的,但我不知道为什么会提醒“2”或“3”。它们似乎比 i 和 j 计数的数量多 1(通过尝试警告“8、2、2”的 j < this.jsGalleries[i].buttons.length-1 进行验证)。
编辑:someId、someGallery 和 someIndex 不是真正的变量,它们是我为了解释问题而编造的垃圾。
【问题讨论】:
标签: javascript addeventlistener