Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   addEventListener - стремно работает (https://javascript.ru/forum/jquery/72177-addeventlistener-stremno-rabotaet.html)

Dark Souls 13.01.2018 14:55

addEventListener - стремно работает
 
Столкнулся с интересной работой addEventListener:
document.addEventListener('click', function (e) {
    var i, p, b, k = e.target.id;
    
    if (k === 'gnl' || 'set' || 'pgn') {
        p = e.target.parentNode.className;
        b = e.target.parentNode.firstChild.textContent;
        if (k === 'pgn') addBlockMenu(b);
        // alert(k);
    }
    if (k === 'prev' || 'next') {
        var len;
        p = e.target.parentNode.parentNode.id;
        b = e.target.className.split(' ')[1];
        len =  e.target.previousSibling.textContent;
        if (k === 'prev') i = --i < 0 ? --len : --i;
        if (k === 'next') i = ++i > len ? 0 : ++i;

        // alert(i)
    }
    printMenuString(p,b,i);
}, false);


printMenuString - не срабатывает.
Если ее вставить в первый блок if - работает.
Если во второй if - отрабатывает вначале из первого if, потом из второго.

Тоже самое и с alert, если клинуть по next || prev, срабатывает alert из первого if, а потом из второго.

??? :-?

Nexus 13.01.2018 15:27

У вас условия кривые, блоки будут выполняться всегда.
Почему "printMenuString" не вызывается - смотрите консоль, наверняка скрипт где-то падает с ошибкой.

upd.
if(['gnl','set','pgn'].indexOf(k)>-1)

рони 13.01.2018 15:31

Цитата:

Сообщение от Dark Souls
if (k === 'gnl' || k === 'set' || k === 'pgn')

:-?

Dark Souls 13.01.2018 15:55

ГрандМерси!!! Работает! :thanks:

j0hnik 14.01.2018 03:31

Цитата:

Сообщение от рони (Сообщение 475107)
:-?

:) когда то я так же пытался условия составить:
а еще так
if (1>a>.5 )


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