我有一个在Chrome中运行良好的功能,但在IE中测试时,它无法访问该功能之外的变量:
if (cipher[i].solved == false){
bottom.classList.add("HighlightBox");
bottom.classList.add("bg-warning");
bottom.addEventListener('click', function(){
// IE cannot access cipher[i] in this function
cipher[i].solved = true;
hintsUsed++;
runHint(true);
populateAnswerKey(puzzleWord, cipher, false);
populatePuzzleBoard(puzzleWord, cipher);
});
}
IE无法访问cipher [i](虽然它在Chrome中运行正常)。有没有办法通过cipher [i],或者我可以进行另一个简单的调整,以便IE在创建事件监听器时可以访问该变量?
编辑:经过更多测试,似乎问题是IE不保留迭代器[i]的值。无论点击哪个事件,它总是比最终传递高一个。 Chrome可以保留迭代器的价值。
答案 0 :(得分:0)
let statement in loop doesn't work as expected in IE
"让"在Internet Explorer中有问题。简单的解决方法是改变:
for (let i = 0, i < cipher.length; i++){
// code
}
到
for (let k = 0, k < cipher.length; k++){
let i = k;
// code
}