繁体   English   中英

IE 11中的AddEventListener函数变量范围问题

[英]AddEventListener function variable scope issue in IE 11

我有一个可以在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可以保留迭代器的值。

编辑2https : //www.dan-teacher.com/cryptogram/41SXLPS1-这是游戏。 它可以在Chrome浏览器中运行,但是在单击“使用提示”然后单击其中一个框时,在IE(我的版本)中无法运行。

循环中的let语句无法按预期在IE中运行

“让”在Internet Explorer中有问题。 简单的解决方法是更改​​:

for (let i = 0, i < cipher.length; i++){
    // code  
} 

for (let k = 0, k < cipher.length; k++){
    let i = k;
    // code  
} 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM