Добрый день! есть todo List .а localStorage не работает до конца) Что не так? заранее благодарю за помощь!

192
10 мая 2018, 07:21
window.onload = function() {
    const addBtn = document.querySelector('.add');
    const list = document.getElementById('list');
    let todos = [];

    const todosArr = (name, status) => {
        let todo = {};
        todo.name = name;
        todo.status = status;
        todos.push(todo);
        console.log(todo);
    };

    let getTodos = () => {
        if(localStorage.getItem('todos')) {
            todos = JSON.parse(localStorage.getItem('todos'));
        }   
    };

    const setTodos = () => {
        localStorage.setItem('todos', JSON.stringify(todos));
    };

    getTodos();

    document.body.addEventListener('click', (el) => {
        if(el.target.nodeName === "LI") {
            el.target.classList.toggle('checked');   
            el.target.setAttribute('status', true);
            console.log(el.target);
            setTodos();
        } else if(el.target.className === "trash") {
            let parent = el.target.parentNode;
            parent.remove();
            setTodos(); 
        }
    });

    const newLiToTodo = () => {
        let li = document.createElement('li');
        let name = document.querySelector('.in').value;
        let date = document.querySelector('.date').value;
        let inputInfo = `${name}  ${date}`;
        let textN = document.createTextNode(inputInfo);
        li.setAttribute('status', false);
        const dellBtn = document.createElement('button');
        const dellTxt = document.createTextNode('Dell');
        dellBtn.className = 'trash';
        dellBtn.appendChild(dellTxt);
        li.appendChild(textN);
        li.appendChild(dellBtn);
        if(!name || !date) {
            alert('Введите необходимые данные');
        } else {
            list.insertBefore(li, list.childNodes[0]);
            document.querySelector('.in').value = '';
            document.querySelector('.date').value = ''; 
        }
        todosArr(inputInfo, li.getAttribute('status'));
    };

    addBtn.onclick = () => {
        newLiToTodo();   
        setTodos(); 
    };  
}
Answer 1

Вы не показали (не написали?) код, который использует элементы загруженного массивa todos для создания DOM-элементов во время загрузки страницы - после вызова getTodos();:

...
getTodos();
function todoToDOM(item) {
    let li = document.createElement('li');
    // и так далее ...
};
todos.forEach(item => todoToDOM(item));
...
READ ALSO
По клику на метку отображать поля из json

По клику на метку отображать поля из json

По клику нужно отображать поля принадлежащие этой ссылке(метке на карте)Отображаю только Id метки, нужно вытащить остальные, objectManager

207
Модальное окно popup

Модальное окно popup

Хочу сделать PopUp с определенным интервалом, те

170
Текст цитаты обрывается

Текст цитаты обрывается

Проблема в том, что длинные цитаты обрываются на 66м знакеВообще нет догадок, что может оказаться причиной

159