• Как вывести наружу переменную из EventListener?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    let будет неглобальной, используйте var
    var indexNum;

    UPD: Я понял, вы конечно тупите, но я наконец понял как вы тупите, ща попробую объяснить для одаренных:
    let indexNum; // нужно получить сюда индекс (тольуо нужно var, а не let)
    // вот тут будет немного сложно, включаем мозг...
        box.forEach((item, index) => { //мы делаем цикл, и набрасываем слушатели(!)
          item.addEventListener('click', () => { //которые могут вообще никогда не случиться, или случиться через час
            indexNum = index; //и ТОЛЬКО ТОГДА в indexNum что-то появится, на текущий момент мы только объяснили 
    //что делать по клику, пока это только команда сделать что-то в случае чего-то, indexNum до тех пор пустой
          });
        });
    // тут indexNum все еще пустой, так как мы не умеем кликать на объекты быстрее чем исполняется код.
    
        mainWrapper.addEventListener('click', () => {
          console.log(indexNum); // выведет предыдущее значение индекса при первом клике
    // но помним, что клика еще нет!
        });
    // и тут клика еще нет
        for (let index = 0; index < 3; index++) {
          console.log(indexNum); // но здесь undefined, а именно здесь индекс и нужен
    // не "но", а здесь клика еще нет, а вы пытаетесь получить его значение.
    //код выполнился, теперь можете кликать, но теперь ваш фор уже вызываться не будет.
        }

    Теперь что надо сделать: Вынести ваш код в функцию, и функцию вызывать внутри евента.
    Ответ написан
    3 комментария
  • Как добавить время публикации задачи в ToDo лист?

    @i1yas
    Если вам нужно просто дописать дату, то так:
    function newElement(){
        var li = document.createElement('li');
        var inputValue = document.getElementById('form-control').value;
        var i = document.createTextNode(inputValue);
        li.appendChild(i);
        var date = new Date();
        var taskDate = date.toLocaleString();
        var time = document.createTextNode(" " + taskDate);
        li.appendChild(time);
        ...
    Ответ написан
    Комментировать