を使用したことはありませんが、コンテンツを生成する方法が原因で、ボタンとして扱っているaddEventListener()
それぞれに必要な HTML に相当するものを書くことができません。<div>
同等のものは次のようになります。
<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);
});
}
}
}
wherei
は 0 から 1 までカウントし、0 から 2 までカウントします(この場合はj
どちらも) 、i
i
someGallery
j
someIndex
someId
this.id
self.id
addEventListener
問題は、これらの「ボタン」( <div>
s) のいずれかをクリックするとトリガーされることですが、
JsTree.prototype.toggleImage = function(inGallery, inIndex) {
alert(this.id+", "+inGallery+", "+inIndex);
}
どのボタンがクリックされても、常に「8、2、3」と警告します。「8」は正しいですが、「2」または「3」が警告される理由がわかりません。それらは、何よりも1だけ多くi
、j
カウントされるようです(j < this.jsGalleries[i].buttons.length-1
どのアラート「8、2、2」を試すことで確認されます)。
編集: someId
、someGallery
、およびsomeIndex
は実際の変数ではなく、問題を説明するために作成したがらくたです。