2016-11-19 4 views
1

EDIT: Поскольку мой вопрос кажется неясным, я буду перефразировать мой вопрос.Как правильно использовать локальное хранилище?

мне нужно:

  • магазин переменных на локальном хранилище. У меня есть кнопка, которая делает это.

  • Извлеките значения переменных, но только в том случае, если в локальном хранилище есть какое-либо значение. Если нет, то я хочу установить стандартное значение.

  • Удалить местное хранилище. У меня также есть кнопка для этого.

Я использую следующий код в этой ситуации, но переменная scrapMetal всегда возвращается истинным.

Javascript:

//Been to variables 
var beenToPrison = true; 

//Item variables 
var scrapMetal = false; 

//Room variables 
var currentRoom = 'prison'; 

//Mission variables 
var currentMission = 'breakOut'; 

//Store 
$("#media-icon1").click(function() { 
    if (Modernizr.localstorage) { 
     localStorage.setItem("curmission", currentMission); 
     localStorage.setItem("curroom", currentRoom); 
     localStorage.setItem("scrpmtl", scrapMetal); 
     localStorage.setItem("beenprison", beenToPrison); 
     addText($('<p>Game saved.<br><br></p>')) 
    } 
    else { 
     addText($('<p>Browser does not support saving.<br><br></p>')) 
    } 
    console.log(scrapMetal); 
}); 

//Remove storage 
$("#media-icon2").click(function() { 
    if (Modernizr.localstorage) { 
     localStorage.removeItem('curroom', 'beenprison', 'scrpmtl', 'curmission'); 
     addText($('<p>Save erased.<br><br></p>')) 
    } 
    else { 
     addText($('<p>Browser does not support saving so there is nothing to delete.<br><br></p>')) 
    } 
    console.log(scrapMetal); 
}); 

//Add a P element to the placeholder in the focus screen 
var addText = function(el) { 
     el.hide().appendTo('#placeholder').fadeIn(1000); 
    } 

//Check if browser support local storage using a library 
$(document).ready(function() { 
    if (Modernizr.localstorage) { 
     addText($('<p>Your browser supports local storage. Game data can be saved by pressing the save button.<br><br></p>')) 
     scrapMetal = localStorage.scrpmtl; 
     if (scrapMetal === null) { 
      scrapMetal = false; 
     } 
     else { 
      scrapMetal = localStorage.scrpmtl; 
     } 
    } 
    else { 
     addText($('<p>Your browser does not support local storage. Your game can not be saved. Please use another browser or update your current browser.<br><br></p>')) 
    } 
    console.log(scrapMetal); 
}); 
+2

проверить документы модернизатора ... вы уверены, что 'if (Modernizr.localstorage)' не должно быть 'if (Modernizr.localStorage)'? Обратите внимание на различия в случае. Или просто используйте 'if (window.localStorage)' – charlietfl

+1

. Чтобы установить ключи на localstorage, вы используете setItem как localstorage.setitem («keyname, value») и получите его localstorage.getItem («keyname») – Geeky

+0

@charlietfl 'localstorage' написано правильно. – Bushido

ответ

1

Просто хотел бы добавить, что данные должны быть преобразованы в формат JSON перед тем, как установить.

localStorage.setItem("scrapMetal", JSON.stringify(false)); 
JSON.parse(localStorage.getItem("scrapMetal")); 

В противном случае вы увидите строку «false», а не логическое значение false.

Смежные вопросы