我创建了以下脚本,我在这里创建了一个计算器并相应更新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);});
}
}
答案 0 :(得分:0)
如果函数在循环内,则将在每次迭代时构造该函数。在循环外声明函数并在循环内调用它。 或者,您可以为jshint ignore添加loopfunc:true标记。