我无论如何都不能理解为什么我会得到这个错误:
“类型错误: eCurVar未定义”。请查看下面的代码。
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--;
}发布于 2012-11-21 18:26:49
在每次迭代之后,i递减一个单位...在三次迭代后,它变成了负数;,所以你读aBBTemplates[-1],你得到了undefined。
当你不能理解几个console.log发生了什么,你最好的办法就是添加一条debugger;指令,然后打开你的devtool (通常通过按F12键)。
至于你的问题,你可以通过在i上添加一个检查来解决它
while (i < aBBTemplates.length && i >= 0) {
}发布于 2012-11-21 18:25:17
在第二种情况下,aBBTemplates[i]可能返回null
发布于 2012-11-21 18:28:00
我们从i等于2开始,假设aBBTemplates[2]返回一些有意义的东西。你用它做一些事情,它们会减少i。让我们假设aBBTemplates[1]是有意义的。
继续下去,i迟早会变成-1,这在读取aBBTemplates[-1]时肯定没有意义
https://stackoverflow.com/questions/13491138
复制相似问题