有人可以解释一下为什么此代码中的if condition
无效吗?
var zaposleni=[];
for(i=1;i<brOpcija;i++){
zaposleni.push(myOpts[i].value);
}
var zaposleniRestoran=[];
for(i=1;i<brOpcija;i++){
if(zaposleni[i].split(' ').slice(2).join(' ') == vrednostSelekta()){
zaposleniRestoran.push(zaposleni[i].split(' ').slice(0,2));
}
}
在这里,我有数组zaposleni
,其中我推送一些值,数组看起来像["name" "surname" "restaurantName"]
,然后我检查restaurantName == vrednostSelekta()
(vrednostSelekta()
是否返回javascript中某些函数的值,但我总是得到这个错误:
Uncaught TypeError: Cannot read property 'split' of undefined
at HTMLSelectElement.<anonymous> (zaposleni.js:51)
at HTMLSelectElement.handle (jquery.min.js:55)
at HTMLSelectElement.o (jquery.min.js:49)
但是当我擦除这个,然后在调试器中键入它时,我没有得到任何错误,它正在那里工作..提前谢谢!
答案 0 :(得分:1)
看起来像&#34; zaposleni&#34;数组为空或者可能只有一个元素。你的for循环开始于&#34; i = 1&#34;。
答案 1 :(得分:1)
在错误中,Cannot read property 'split' of undefined
表示您正在调用.split(...)
某些未定义的内容。
这意味着在if的开头,脚本在未定义zaposleni[i]
时停止。
这可能是因为i
大于zaposleni
的{{1}}长度,因为您正在迭代到相同的值,但是你&# 39;重新开始推动i
而不是i=1
,因为JS中的数组索引从i=0
开始。换句话说,您要在0
而不是zaposleni[0]
添加值,并要求从zaposleni[last index value]
到zaposleni[1]
,因此最后一个将是未定义的。
问题也可能是某些zaposleni[last index value]
值未定义myOpts[i].value
,所以我建议检查