2017-02-11 22 views
0

有人可以解釋爲什麼if condition在這段代碼不工作?拆分不工作在JavaScript,未捕獲類型錯誤

 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) 

但是,如果當我抹去這一點,然後鍵入調試器,我沒有得到任何錯誤,它是在提前工作there..Thanks!

+0

因爲我知道每個陣列LOP應與I = 0開始;因爲每個數組的第一個'item'索引爲0,如果數組1中有一個'item',則<1不是真,因此它將返回false。用你的語言,我應該說「zagrej malo stolicu to su osnovne stvari」。 – NoNameIamLame

回答

2

看起來像「zaposleni」數組是空的,也許它只有一個元素。您的for循環從「i = 1」開始。

1

在錯誤中,Cannot read property 'split' of undefined意味着你打電話給.split(...)未定義的東西。

這意味着在if的開頭,當zaposleni[i]未定義時,腳本停止。

這可能是因爲i是比爲i最大價值的zaposleni長度更大,因爲你迭代到相同的值,但是你開始推動在i=1而非i=0,作爲數組索引在JS開始在0。換句話說,您要在zaposleni[0]處添加一個值,而不是zaposleni[last index value],並且要求從zaposleni[1]zaposleni[last index value],因此最後一個值將是未定義的。

問題也可能是myOpts[i].value可能是對的i一些值不確定的,所以我會建議檢查