2015-07-02 146 views
3

我想從這個位代碼未經檢查的數組中刪除一個項目。array.splice不是一個函數

function filterSearch() { 
var cats = []; 

$('.filter-by-type input[type="checkbox"]').change(function() { 
    var cat = $(this).attr('name') + ', '; 
    if(this.checked) { 
     cats += cat; 
    } else { 
     cats.splice(cats.indexOf(cat), 1); 
    } 

    console.log(cats); 
}); 

} 

filterSearch(); 

我收到錯誤Uncaught TypeError: cats.splice is not a function

基本上我想,如果該項目被選中,如果不加以控制拆下來的值添加到cats[]陣列。任何幫助,將不勝感激。

回答

8

cats是一個數組。在這裏:

if(this.checked) { 
    cats += cat; 
     ^^ 
} else { 
    cats.splice(cats.indexOf(cat), 1); 
} 

您正在嘗試來連接的陣列與+=操作,cats現在是一個字符串,你應該使用push方法來代替。

if(this.checked) { 
    cats.push(cat); 
} else { 
    cats.splice(cats.indexOf(cat), 1); 
} 
+1

更具體地說,'cats + = cat'用* string *替換'cats'數組,如通過在JavaScript控制檯中測試可以看到的。 –

+0

謝謝!這工作完美。 –