2013-10-07 40 views
0

当我尝试传递等于文本框的值的pop_size变量时,出现问题。该变量将用于带有文本框值的脚本。当我点击按钮时,数值发生变化并更新变量的值,然后重新加载页面,并将变量设置为文本框中的值。Javascript变量等于文本框的值

<form name="myform1" action="" method="get"> 
    Input the number of populations<br /> 
    <input type="number" name="pop" id="pop" value=5 /><br /> 
    <input type="button" name="b1" id="b1" value="Click to set" 
      onClick="setValue()" /><br /> 
</form> 

function setValue() { 
    var test, test1; 
    test=parseInt(document.getElementById('pop').value); 
    pop_size = test; 
} 

回答

0

如果我正确理解你,你有一个变量集,直到你重新加载工作正常,但后来丢失。

我知道有两种基本策略可以使页面重新加载时变量生效。

我列出的第一个看起来更复杂。我会告诉你它的基础知识,如果你需要,可以告诉你更多。获得该值后,将其附加到查询字符串内的网页地址中。这将是类似于window.location += "?pop_size=" + pop_size;,但它有很多固有的困难:你必须有一个脚本来检查查询字符串并从中提取pop_size,并且当你更新它时应该替换查询字符串中的任何现有的pop_size 。它可以工作,并且您可以找到大量讨论查询字符串和javascript的网页,但有更简单的方法。

如果您使用HTML5,更简单的解决方案是使用sessionStorage。目前它是supported in all major browsers,但我提供给MDN的第一个链接为您提供了一个可以提供向后兼容性的polyfill。它会让你在浏览器中保存变量,直到用户关闭浏览器窗口。

要保存价值,MDN建议你这样做:

sessionStorage.setItem("pop_size", pop_size); 

与检索页面加载的值:

document.getElementById('pop').value = sessionStorage.getItem("pop_size") || 5; // if it's not found, default back to 5. 

老实说,我从来没有见过这种语法,和我米不确定为什么MDN推荐它。 sessionStorage对象的标准用法更加简单:

sessionStorage.pop_size = pop_size; 
... 
document.getElementById('pop').value = sessionStorage.pop_size || 5; // if it's not found, default back to 5.