2014-01-14 68 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代码将得到单选按钮值,并将其通过的getValue发送到JavaScript代码(logic.js)。

//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

你好,请你详细说明that.How是我想创造variable.I以为我已经有it..var VAL =文档瓦尔...或者是别的东西。 – user36278

回答

1

您的JavaScript有一些问题。

  • retrieveObject在第2行被引用时未定义。
  • 无需创建一个window.getValue功能。另外,它所做的全部是 为本地作用域变量赋值。
  • localStorage.setItem被调用时,vall不存在,它不在 范围内。
  • 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

我非常感谢您的帮助,但是当我尝试使用保存的值来执行逻辑语句,因为它显示'savedvalue is not defined'东西} – 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) 
    }