Почему переменная не записывается в LS?

353
03 июня 2017, 18:05

Есть код:

<script>
        var colorPicker = document.getElementById("bgcolor");
        var retObj = JSON.parse(localStorage.getItem("object"))
        function SaveFon() {
                localStorage.setItem("object", fon)                                     
                localStorage.setItem("object2", colorVal)
            }               
        function changebodycolor(){
            colorVal = colorPicker.value;
            document.body.style.background = colorVal;
            fon = 3;
            SaveFon();  
        }                   
        colorPicker.addEventListener("change",
        changebodycolor,false);
    </script>

И условие:

var retObj = JSON.parse(localStorage.getItem("object"))
var colorVal = JSON.parse(localStorage.getItem("object2"))
 if (retObj == "2") {
    document.body.classList.add('winter');
} else if (retObj == "3") {
    document.body.style.background = colorVal;
} else if (retObj == "4") { }

Т.е. если фоном выбрана картинка (в коде нет, это на др странице), то переменной присваивается значение "2", далее эта переменная записывается в LS и вынимается в файле JS, который Вы видите. Всё работает с этой переменной отлично и таким образом меняя фон на одной странице он меняется на всех даже если пользователь покинет сайт и вернется потом - благодаря LS. Но есть небольшая проблема с установкой цвета фона. Реализацию Вы видите выше. Я сохраняю переменную colorVal и вынимаю в файле JS, где использую вот так:

 document.body.style.background = colorVal;

Но, увы, фон не сохраняется. Почему? Переменная такого типа не может запомнится в LS или я что-то делаю не так? Кстати, условие выполняется, т.е. переменная retObj равна "3", это я проверял. Дело именно в colorVal.

Answer 1

Консоль показывает ошибку

Uncaught SyntaxError: Unexpected token # in JSON at position 0 at JSON.parse

при этом ссылается на строку:

var colorVal = JSON.parse(localStorage.getItem("object2"))

Уберите JSON.parse() и всё будет норм работать.

READ ALSO
Оставить в строке символы между тире

Оставить в строке символы между тире

Привествую, столкнулся с проблемойЕсть строка id = 'table-1-s3' Как можно оставить текст только между тире? То есть на выходе должно быть id = '1'

378
jQuery Скролл до Элемента содержащего Текст

jQuery Скролл до Элемента содержащего Текст

Всем привет, нужен пример скрипта который будет скроллить экран не просто до элемента с якорем, а до элемента который содержит текст "HELLO"

285
PassportJS без редирект

PassportJS без редирект

Использую passportJS для регистрации через facebookПерехватываю CallbackURL вот так:

311