надеюсь, не криво
Ну так это проверить не сложно. Для этого нужно обязать alert показывать не лозунги, а результат действа:
if(arrayCheck(e, itemsList)) {
itemsList.splice(e, 1);
alert(itemsList.length);
} else {
itemsList.push(e);
alert(itemsList.length);
}
Пощелкаем по объектам в этом случае, и что наблюдаем? Чтобы понять "почему", нужно вспомнить, что метод splice() первым аргументом принимает индекс первого удаляемого/замещаемого элемента массива, а вы передаете в него объект.
Функция проверки наличия объекта в массиве должна возвращать не просто его наличие в массиве, но и индекс его в нем:
function arrayCheck(value, array) {
for(var i = 0, k = array.length; i < k; i++) if(array[i] == value) return i;
return -1;
}
А код добавить/удалить должен быть таким:
if(e.className == 'item') {
if((i = arrayCheck(e, itemsList)) > -1) {
itemsList.splice(i, 1);
alert(itemsList.length);
} else {
itemsList.push(e);
alert(itemsList.length);
}
break;
}