首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >代码审查- if else函数

代码审查- if else函数
EN

Stack Overflow用户
提问于 2012-11-21 18:23:49
回答 4查看 95关注 0票数 0

我无论如何都不能理解为什么我会得到这个错误:

“类型错误: eCurVar未定义”。请查看下面的代码。

代码语言:javascript
复制
    var aBBTemplates = document.getElementsByClassName ("cBBTemplates");
    var i = 2;
    while (i < aBBTemplates.length)
    {
        var eCurVar = aBBTemplates[i];
        if (eCurVar === e.target)
        {
            eCurVar.style.zIndex = 3;
     // type error: eCurVar is undefined on the following line. 
        }   else if (eCurVar.style.zIndex === 3)    {
            console.log (eCurVar);
            eCurVar.style.zIndex = 3-1;
        }   else
        {
            console.log (eCurVar)
            eCurVar.style.zIndex = i;
        }
        i--;
    }
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-11-21 18:26:49

在每次迭代之后,i递减一个单位...在三次迭代后,它变成了负数;,所以你读aBBTemplates[-1],你得到了undefined

当你不能理解几个console.log发生了什么,你最好的办法就是添加一条debugger;指令,然后打开你的devtool (通常通过按F12键)。

至于你的问题,你可以通过在i上添加一个检查来解决它

代码语言:javascript
复制
while (i < aBBTemplates.length && i >= 0) {
}
票数 3
EN

Stack Overflow用户

发布于 2012-11-21 18:25:17

在第二种情况下,aBBTemplates[i]可能返回null

票数 1
EN

Stack Overflow用户

发布于 2012-11-21 18:28:00

我们从i等于2开始,假设aBBTemplates[2]返回一些有意义的东西。你用它做一些事情,它们会减少i。让我们假设aBBTemplates[1]是有意义的。

继续下去,i迟早会变成-1,这在读取aBBTemplates[-1]时肯定没有意义

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13491138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档