Javascript 错误:";无法读取属性";分区;“未定义”的定义;
我一直在犯这个错误 “无法读取未定义的属性'div'” 这是我的密码Javascript 错误:";无法读取属性";分区;“未定义”的定义;,javascript,function,if-statement,Javascript,Function,If Statement,我一直在犯这个错误 “无法读取未定义的属性'div'” 这是我的密码 function checkCard(){ for(let i = 0; i < 13; i++){ if(animalNums[i].animal.textContent === findArray[i].div.textContent){ animalNums[i].animal.style.display = "block"
function checkCard(){
for(let i = 0; i < 13; i++){
if(animalNums[i].animal.textContent === findArray[i].div.textContent){
animalNums[i].animal.style.display = "block"
animalNums[i].animal.classList.add("animate");
setTimeout(function(){animalNums[i].animal.classList.remove("animate");},1001)
score += 1
document.getElementById("scoreP").innerHTML = `Score: ${score}`
}
}
}
我不确定为什么会发生这种情况,因为我相信我已经完成了一个与以前非常类似的功能。这与范围有关吗?@sabbir.alam
是的,我可以在函数中记录数组
@ShaneerM13
是的,我不确定这是最好的写法。我更想显示我遇到的错误,因为它发生在许多不同的函数中。发生这种情况的最可能原因是,您正在使用大于数组本身长度的
'I'
值对数组进行迭代。您正在使用值i<13
并递增“i”。您的数组可能少于12个元素,当您试图获取第12个索引处的值时,会得到“未定义”,因为该'i'
值处没有索引。这里还需要记住一点,数组是基于0的
由于您尚未共享整个阵列,因此我无法确定,但您可以查看下面的示例片段来理解我的意思:
让findArray=[
{
div:document.getElementById(“findOne”),
},
{
div:document.getElementById(“findTwo”),
},
{
div:document.getElementById(“findThree”),
},
];
(功能检查卡(){
for(设i=0;i<4;i++){
log(i,findArray[i].div);
}
})();代码>
你能在你的函数中记录数组吗?一个问题。。。为什么?您不能通过使用相同的类名并在类上执行选择器,同时在类中循环来完成相同的任务吗?我想不会,因为在findArray[I].div.textContent
if语句中只有0到2被“获取”,而实际的循环是0到12。数组的长度是多少?它有多少元素?
let findArray = [
{
div: document.getElementById("findOne")
},
{
div: document.getElementById("findTwo")
},
{
div: document.getElementById("findThree")
}
]