これは説明が難しいかもしれませんので、私にご負担ください。Javascript - オブジェクトを変更させるaddEventListenerのパラメータを渡しますか?
for (var i = 0; i < this.array.length; i++) {
var object = this;
(function(object, i) {
object.array[i].addEventListener(event, function() {
func(i)
}, false)
}(object, i));
}
ここでの配列は、クエリセレクタを使用して作成されたHTML要素の集まりです。
このコードは、プロトタイプメソッド内で保持され、パラメータ 'func'が渡されます。 'func'に渡される値は無名関数です。
上記のコードを使用すると、カウンタ 'i'を匿名関数に正常に渡すことができます。
他のメソッドの1つは、要素の配列に対してJavascriptのparentNode関数を使用します。ここに問題があります。上記のコードでは、配列要素がオブジェクトではないというエラーが発生しています。
ただし、このコードを使用するとエラーは発生しません。
for (var i = 0; i < this.array.length; i++) {
var object = this;
(function(object, i) {
object.array[i].addEventListener(event, func, false)
}(object, i));
}
だから、何らかの理由では、addEventListenerで無名関数でラッピング「funcが」配列要素を変更している、少なくともあるように思われます。しかし、それは意味をなさないと思われますか?
同じ名前の複数のスコープ(つまりオブジェクト、i)の変数に名前を付けるのはなぜですか? –
'object.array。[i]'の代わりに 'object.array [i]'を使用してください。 –
'object.array。[i]'は有効な構文ではありません。また、最初の例では 'func(i)'を呼び出しています。 2番目の方法では、 'func()'を呼び出すのと同じです。 –