2014-01-14 5 views
-1

Я пытаюсь получить значение переключателя и хранить его в локальном хранилище, чтобы затем получить доступ к локальному хранилищу через переменную ... если это не так много для вас, ребята Мне очень жаль, что я новичок в Javascript.Локальное хранилище в javascript

// javascript code (logic.js)// 

    console.log("loading..."); 
    var build= retrievedObject 

    if (build===1){ 

    console.log("Option 1 Remember"); 
    }; 


    if (build===2){ 
    console.log("Option 2 Remember"); 
    }; 


    if (build===3){ 
    console.log("Option 3 Remember"); 
    }; 

    window.getValue = function(){ 
    var vall= document.querySelector("input[name=optionsRadios]:checked").value; 
    } 

    localStorage.setItem('vall', JSON.stringify(vall)); 
    var retrievedObject = localStorage.getItem('vall'); 

Я хочу, чтобы переменная 'vall' хранилась в локальном хранилище и затем извлекалась для последующего использования.

Код html получит значения переключателя и отправит их в код javascript (logic.js) через getValue.

//HTML Code// 

</HEAD> 
     <script type="text/javascript" src="jquery-2.0.3.min.js"></script> 
     <script type="text/javascript" src="logic.js"></script> 
<BODY> 

<form> 
<INPUT TYPE="radio" name="optionsRadios" id="Home" VALUE="1" >Home 
<INPUT TYPE="radio" name="optionsRadios" id="School" VALUE="2" >School 
<INPUT TYPE="radio" name="optionsRadios" id="Work" VALUE="3" >Work 


<center><input type="button" name="send" value="Submit" onclick="getValue();"></center> 
</form> 


</BODY> 
</HTML> 

Однако местное хранилище не работает.

Благодаря

+1

Это весь ваш код? Когда вы вызываете 'setItem', переменной' vall' пока нет. И переменная находится в области функций. Вы не можете получить к нему доступ таким образом. –

+0

Привет, не могли бы вы рассказать об этом. Как я полагаю, чтобы создать переменную vall. Я думал, что у меня уже есть ее. Val val = document ... или это что-то еще. – user36278

ответ

1

В вашем javascript есть некоторые проблемы.

  • retrievedObject не определен, если на него ссылаются в строке 2.
  • Не нужно создавать функцию window.getValue. Кроме того, все, что он делает, - , присваивает значение переменной локально ограниченной области.
  • Когда localStorage.setItem называется, vall не существует, это из scope.
  • localStorage.getItem('vall') не работает, потому что значение было сохранено с помощью vall в качестве ключа.
  • Вы ссылаетесь на jQuery, но на самом деле не используете его.

Вместо исправления кода вам проще показать, как это сделать с нуля. Я написал вам пример использования локального хранилища. Вы можете увидеть его на jsfiddle здесь: http://jsfiddle.net/3kLug/3/

HTML:

<form> 
    <input type="radio" name="optionsRadios" id="Home" value="1" />Home 
    <input type="radio" name="optionsRadios" id="School" value="2" />School 
    <input type="radio" name="optionsRadios" id="Work" value="3" />Work 
    <input id="setValue" type="button" name="send" value="Submit" /> 
</form> 

Javascript:

$(document).ready(function() { 
    // Add click handler to button 
    $('#setValue').click(function() { 
     // Get the value of the checked radio button 
     var valueToSave = $("input[name=optionsRadios]:checked").val(); 

     if (!valueToSave) { 
      alert('Select an option!'); 
      return; 
     } 

     // Save the value in local storage   
     localStorage.setItem('vall', valueToSave); 
     alert('Saved value: ' + valueToSave); 
    }); 

    // Get the saved value from local storage 
    var savedValue = localStorage.getItem('vall'); 

    if (savedValue) { 
     alert('Saved value is: ' + savedValue); 

    // If we have a saved value, check the appropriate radio button 
     $('input[name=optionsRadios][value=' + savedValue + ']').attr('checked', 'checked'); 
    } 
}); 
+0

Я очень благодарен за вашу помощь, однако у меня, похоже, возникла проблема при попытке использовать сохраненное значение для выполнения логического оператора, поскольку он говорит: «Сохраненное значение не определено» .eg: If (savedValue === 1) {do something} – user36278

+0

Вы должны объявить переменную перед ее использованием. 'var savedValue = localStorage.getItem ('vall'); if (savedValue === 1) {...} 'Скорее всего, вы не объявили его с помощью' var'. – greg84

0

Этот ответ основан на том факте, если вы были успешными в хранении строку/объект в LocalStorage.

Чтобы извлечь данные из localStorage, вам необходимо использовать $.parseJSON() для декодирования данных в переменной/строке для вашего использования в вашем приложении.

var retrievedObject = $.parseJSON(localStorage.getItem('vall')); 
0

Больше как это:

непроверенная.

// javascript code (logic.js)// 

    console.log("loading..."); 
    var vall; 
    try { 
     vall = localStorage.getItem('vall'); 
     console.log("read localStorage[vall] = "+vall); 
    } except(e) { 
     console.log("got an error reading localstorage "+e); 
    } 

    window.getValue = function(){ 
// this function is the only code that has access to the new value of vall 
// so it must store it before returning 
     var newvall= document.querySelector("input[name=optionsRadios]:checked").value; 
     localStorage.setItem('vall',newvall) 
    } 
Смежные вопросы