JSHint返回奇怪的错误

时间:2014-11-13 21:19:27

标签: javascript jshint

我创建了以下脚本,我在这里创建了一个计算器并相应更新DOM的帮助。我最近把我的编辑器改成了一个有JSHint的编辑器。我给了我一些赔率错误,我希望有人可以提供见解。

主要的是"不要在循环中使用#34;这是指.addEventListener数组推送。为什么这是一个问题,我为什么要这样做呢?

var currentFunction = [];

    function pushToArray(v){
      currentFunction.push(v);
      addtoScreen(v);

    }

    function addtoScreen(vTag){

      var screen = document.getElementById("screen");

      if(currentFunction.length == 1){
        var newCalc = document.createElement("p");    
        newCalc.className = "calc";

        var opInt = document.createElement("span");
        opInt.innerHTML = vTag;

        newCalc.appendChild(opInt);
        screen.appendChild(newCalc);
      }else if(vTag == "="){
        var opInt = document.createElement("span");
        opInt.innerHTML = vTag;

      }else{
        var opInt = document.createElement("span");
        opInt.innerHTML = vTag;

        newCalc = screen.lastChild;

        if(newCalc){
          newCalc.appendChild(opInt);
        }else{
         screen.appendChild(opInt);   
        }
      }
    }

    var numbers = document.getElementsByTagName("button");

    for(var i = 0; i < numbers.length; i++){
      if(numbers.item(i).id != "equalButton"){
        numbers.item(i)
          .addEventListener("click", function(){pushToArray(this.value);});
      }
    }

1 个答案:

答案 0 :(得分:0)

如果函数在循环内,则将在每次迭代时构造该函数。在循环外声明函数并在循环内调用它。 或者,您可以为jshint ignore添加loopfunc:true标记。