0

を使用したことはありませんが、コンテンツを生成する方法が原因で、ボタンとして扱っている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どちらも) 、iisomeGalleryjsomeIndexsomeIdthis.idself.idaddEventListener

問題は、これらの「ボタン」( <div>s) のいずれかをクリックするとトリガーされることですが、

JsTree.prototype.toggleImage = function(inGallery, inIndex) {
    alert(this.id+", "+inGallery+", "+inIndex);
}

どのボタンがクリックされても、常に「8、2、3」と警告します。「8」は正しいですが、「2」または「3」が警告される理由がわかりません。それらは、何よりも1だけ多くijカウントされるようです(j < this.jsGalleries[i].buttons.length-1どのアラート「8、2、2」を試すことで確認されます)。

編集: someIdsomeGallery、およびsomeIndexは実際の変数ではなく、問題を説明するために作成したがらくたです。

4

2 に答える 2