Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 28.02.2015, 06:22
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

надеюсь, не криво

Ну так это проверить не сложно. Для этого нужно обязать 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, 28.02.2015 в 06:24.
Ответить с цитированием
  #12 (permalink)  
Старый 28.02.2015, 10:05
Интересующийся
Отправить личное сообщение для slavaspirit Посмотреть профиль Найти все сообщения от slavaspirit
 
Регистрация: 22.06.2013
Сообщений: 14

laimas,
спасибо ещё раз. Только ночью обнаружил косяк... Насколько я понял, довольно типичная ошибка для новичков - писать Алерты таким образом, как я писал))) Исправляюсь...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получение элемента в функции, используя each() ansi_str jQuery 0 30.11.2012 09:48
Получение элемента в модальном окне any.zicky Библиотеки/Тулкиты/Фреймворки 1 31.08.2012 16:36
Получение ссылки вызвавшего элемента belkir Events/DOM/Window 8 02.08.2011 12:32
Получение значения соседнего элемента Max Tretyakov Events/DOM/Window 2 27.06.2011 22:01
Получение стиля элемента. BreatheInTheVoid Элементы интерфейса 4 01.05.2010 17:25