надеюсь, не криво
Ну так это проверить не сложно. Для этого нужно обязать 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; } |
laimas,
спасибо ещё раз. Только ночью обнаружил косяк... Насколько я понял, довольно типичная ошибка для новичков - писать Алерты таким образом, как я писал))) Исправляюсь... |
Часовой пояс GMT +3, время: 08:03. |