在JS中运行div的forEach()会产生错误

时间:2017-02-06 15:19:12

标签: javascript angular

我在数组中有几个div我想要改变高度,即使我记录div的名称并且它给了我正确的对象名称,我仍然得到一个"这是未定义"控制台中的错误消息。

就像我说的那样,当我注销所有div的名字时,他们都是正确的,但是在我要设置高度的行上,我猜这是"这个&#34有问题;某处。

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中这样做,万一有人在想。 关心任何帮助。

2 个答案:

答案 0 :(得分:2)

在您的函数上下文中没有this,尝试使用箭头函数:

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

您也可以将this绑定到您的函数。

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

答案 1 :(得分:1)

问题在这里

function names(div) {

在JavaScript中,除非您传递另一个this

,否则它属于当前函数
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');
}