拆分不在javascript,Uncaught TypeError中工作

时间:2017-02-11 23:40:09

标签: javascript

有人可以解释一下为什么此代码中的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)

但是当我擦除这个,然后在调试器中键入它时,我没有得到任何错误,它正在那里工作..提前谢谢!

2 个答案:

答案 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,所以我建议检查