localStorage обновляется. Как запретить

209
10 сентября 2018, 04:40
if (localStorage.getItem('todo')!=undefined){    
        var tasks = [];
        tasks = JSON.parse(localStorage.getItem('todo'));
        for (var key in tasks) {
            $('#list').append("<li >" + tasks[key] + "</li>");
        }
    }
        function SaveTask(){
            var tasks = [];
            $('li.task').each(function(i, el){
                var val = $(el).text();                         
                    tasks.push(val);                        
            }); 
            console.log(tasks); 
            localStorage.setItem('todo', JSON.stringify(tasks));
        }
        function AddTask(){
            var val = $('#new-todo').val();
            var del = $('<a class="del" href="#" />').text('×');
            var li = $('<li class="task" />').html(val).append(del);
            if (val) {
                li.appendTo($('#list'));
                $('#new-todo').val('');                                 
            }
            del.click(function () {
                li.remove();                
            });
        }   
        $('#btn-enter').click(function () {
            AddTask();
            SaveTask();
        });

При перезагрузке страницы отображаются только последнедобавленные, вместо всех. Если var tasks = []; сделать глобальной, идет некорректное сохранение в массив. Тут 2 варианта - скорректировать SaveTask() или localStorage. Рассмотрю все... http://jsfiddle.net/Nata_Hamster/6vhas75k/

Answer 1

Вы при сохранении делаете выборку по li.task в то время, как класс task добавляете только новым записям, поэтому старые записи не входят в выборку для сохранения.

Не меняя оформление страницы можно сделать выборку #list > li - в нее входят и старые и новые записи.

Такой селектор css читается как "выбрать все элементы li - прямые потомки элемента с id list"

http://jsfiddle.net/6vhas75k/2/

READ ALSO
Вставка значений переменных в текст Javascript

Вставка значений переменных в текст Javascript

Имеется текст нескольких различных математических задач

249
Active Directory с помощью JavaScript

Active Directory с помощью JavaScript

Как получить информацию о пользователе в Active Directory с помощью JavaScript?

234
Как правильно добавить элементы в такой массив?

Как правильно добавить элементы в такой массив?

В момент перебора массива, раз в цикл из массива извлекаются 3 значения: typeN, nameN и valueNКак правильно добавлять их в новый массив, чтобы получить...

246
Как зарегистрировать свайп

Как зарегистрировать свайп

У меня тут вопрос возникКак с помощью js событий поймать свайп по экрану смартфона?

282