Javascript 代码检查-if-else函数
我一生都无法理解为什么我会犯这样的错误: “类型错误:eCurVar未定义”。请检查下面的代码Javascript 代码检查-if-else函数,javascript,if-statement,Javascript,If Statement,我一生都无法理解为什么我会犯这样的错误: “类型错误:eCurVar未定义”。请检查下面的代码 var aBBTemplates = document.getElementsByClassName ("cBBTemplates"); var i = 2; while (i < aBBTemplates.length) { var eCurVar = aBBTemplates[i]; if (eCurVar === e.targ
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--;
}
var aBBTemplates=document.getElementsByClassName(“cBBTemplates”);
var i=2;
而(i
在第二种情况下aBBTemplates[i]
可能返回null
在第二种情况下aBBTemplates[i]
可能返回null在每次迭代后i
减少一个单位。。。经过三次迭代,它变成负值;所以你读了aBBTemplates[-1]
你得到了未定义的
当您无法理解很少的控制台.log发生了什么时,最好的办法是添加一个调试器代码>说明,然后打开devtool(通常按F12)
至于您的问题,您可以通过在i
上添加检查来解决:
while (i < aBBTemplates.length && i >= 0) {
}
while(i=0){
}
每次迭代后,i
递减一个单位。。。经过三次迭代,它变成负值;所以你读了aBBTemplates[-1]
你得到了未定义的
当您无法理解很少的控制台.log发生了什么时,最好的办法是添加一个调试器代码>说明,然后打开devtool(通常按F12)
至于您的问题,您可以通过在i
上添加检查来解决:
while (i < aBBTemplates.length && i >= 0) {
}
while(i=0){
}
以i
等于2开始。让我们假设aBBTemplates[2]
返回一些有意义的内容。你用它做点什么,它们就会减少i
。让我们假设aBBTemplates[1]
是有意义的
继续,迟早i
会变成-1,这在阅读aBBTemplates[-1]
时肯定是没有意义的,你从i
开始时等于2。让我们假设aBBTemplates[2]
返回一些有意义的内容。你用它做点什么,它们就会减少i
。让我们假设aBBTemplates[1]
是有意义的
如果继续,那么i
迟早会变成-1,当将aBBTemplates[-1]
读入if函数并检查eCurrVar是否也为空时,这肯定没有意义
if (eCurVar != null && eCurVar === e.target){
// your code
} else {
// if ecurvar == null or ecurvar != e.targer
}
同时检查您的i
是否为正数,因为数组不包含具有负索引的项:
while(i >= 0 && i < aBBTemplates.length)
while(i>=0&&i
进入if函数检查eCurrVar是否也为空
if (eCurVar != null && eCurVar === e.target){
// your code
} else {
// if ecurvar == null or ecurvar != e.targer
}
同时检查您的i
是否为正数,因为数组不包含具有负索引的项:
while(i >= 0 && i < aBBTemplates.length)
while(i>=0&&i
你是在暗示GetElementsByCassName返回一个包含null的数组吗?我是在暗示aBBTemplates[I]
,即索引I
处的数组项,计算结果为null
@dystroy如果你阅读OP的代码,你会看到他在*递减*I
,在某个时候它将是-1
。而且abbmetplates[-1]
很可能是null
。无论如何,谢谢你的否决票。我已经读过了,这就是为什么我对布鲁的答案投了赞成票,这是第一个答案,它带来的不仅仅是重复错误信息。说真的,如果你说的不止这些,我会建议你发表评论而不是回答…你是在暗示GetElementsByCassName返回一个包含null的数组吗?我是在暗示aBBTemplates[I]
,即索引I
处的数组项,如果你阅读OP的代码,它的计算结果是null
@dystroy,你会看到他在*递减*i
,在某个点上它将是-1
。而且abbmetplates[-1]
很可能是null
。无论如何,谢谢你的否决票。我已经读过了,这就是为什么我对布鲁的答案投了赞成票,这是第一个答案,它带来的不仅仅是重复错误信息。说真的,如果你说的不止这些,我会建议你发表评论而不是回答…谢谢,这很有道理。谢谢,这很有道理。