2017-02-06 3 views
1

私は高さを変更する配列内のいくつかのdivを持っていますが、私はdivの名前を記録し、私に正しいオブジェクト名を与える場合でも、私はまだコンソールに "これは未定義です"というエラーメッセージが表示されます。forEach()JSでdivを実行エラー

私が言ったように、divのすべての名前をログアウトすると、正しく指定されますが、高さを設定したい行には、どこか "this"に問題があると思います。

this.divs.forEach(names); 
    function names(div) { 
    console.log(div); //goes thought all the divs correctly 
    this._renderer.setElementStyle(div.nativeElement, 'height', largestHeight + 'px'); 
    } 

誰かが不思議に思っていた場合は、私はangular2でそれをやっています。 よろしくお願いいたします。

this.divs.forEach(names.bind(this)); 

またはES6

let names = (div) => { 
    console.log(div); //goes thought all the divs correctly 
    this._renderer.setElementStyle(div.nativeElement, 'height', largestHeight + 'px'); 
} 
+0

「ForEach(names.bind(this))」を試してみてください。スコープの問題のようです。 – Olical

+0

ありがとう、残りのように正しい答え。 –

答えて

2

にはthisはありません。

+0

ありがとうございました。それが正しいとマークされています。 :) –

+0

あなたの歓迎! :) –

+0

@Alfa 'a lot'; '割り当て'は '割り当て'を意味します。 –

1

問題は、あなたが別のthisを渡さない限り、これは現在の関数に所属され、ここで、JavaScriptで

function names(div) { 

です関数のコンテキストで、arrow funcを使用しようとする

this.divs.forEach((names) => { 
    ... 
}); 

また、thisを関数にバインドすることもできます。

this.divs.forEach(names.bind(this)); 
+0

説明をお寄せいただきありがとうございました。 –

関連する問題