Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Получение Id элемента (https://javascript.ru/forum/misc/54010-poluchenie-id-ehlementa.html)

laimas 28.02.2015 06:22

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

Ну так это проверить не сложно. Для этого нужно обязать 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;
}

slavaspirit 28.02.2015 10:05

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


Часовой пояс GMT +3, время: 08:03.