2015-07-02 4 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' заменяет массив' cats' строкой *, что можно увидеть, протестировав ее в консоли JavaScript. –

+0

Спасибо! Это сработало отлично. –

Смежные вопросы