createElement创建无限循环

时间:2018-12-07 02:29:03

标签: javascript infinite-loop createelement

我真的是javascript的新手,并且通常对代码进行编码,我不明白为什么这会导致无限循环:

Loader

如果我将其取出,则该网页可以很好地加载,但是如果保留它,则该网页将永远不会完全加载,并且我的浏览器使用了50%的CPU。

这是我的其余代码:

  let newTr = document.createElement('tr');

谢谢!

P.S。代码可能还有很多其他错误,在弄清楚这一点之前,我无能为力!

2 个答案:

答案 0 :(得分:0)

作为解释,在您的代码中

i = pfcCase.length - 1

pfcCase.length - 1的值分配给i。该循环部分的语法应为

  

an expression to be evaluated before each loop iteration.如果此表达式的值为true,则执行语句。

对代码的评估没有任何意义。

评估

i < pfCase.length

在每次迭代之前检查当前索引是否小于数组的长度,但是工作正常。

答案 1 :(得分:0)

这里没有条件陈述。在此语句中,您将pfcCase长度减1分配给I变量。

for (var i = 0; i = pfcCase.length - 1; i++) {

您必须将i变量与pfcCase的长度减去1进行比较。

这应该有效。

for (var i = 0; i < pfcCase.length - 1; i++) {

注意到其他情况

此行不执行您认为的操作。

let newText = document.createTextNode(i.value);

i只是索引,即数字。它没有value属性。

这就是您要做的。

let newText = document.createTextNode(pfcCase[i].value);

我的偏好(forEach)

我更喜欢使用数组forEach方法。它更干净,更不容易出错。

pfcCase.forEach( function(val){
    let newTd = document.createElement('td');
    let newText = document.createTextNode(val.value);
    console.log('The array element is. '. val.value, ' The value is. ', val.value);
    newTd.appendChild(newText);
    newTr.appendChild(newTd);
  });