0

当我尝试传递一个等于文本框值的 pop_size 变量时,我遇到了问题。此变量将与文本框的值一起用于脚本中。当我单击按钮时,值会更改并更新变量的值,然后我重新加载页面并将变量设置为文本框中的值。

<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;
} 
4

1 回答 1

0

如果我对您的理解正确,那么您的变量集在重新加载之前可以正常工作,但随后会丢失。

我知道有两种基本策略可以使变量在页面重新加载后仍然存在。

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

如果您使用的是 HTML5,更简单的解决方案是使用sessionStorage。目前所有主流浏览器都支持它,但我提供的第一个链接(给 MDN)为您提供了一个可以向后兼容的 polyfill。它将允许您将变量存储在浏览器上,这些变量将保持活动状态,直到用户关闭浏览器窗口。

要保存该值,MDN 建议您执行以下操作:

sessionStorage.setItem("pop_size", pop_size);

并通过以下方式检索 pageLoad 上的值:

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.
于 2013-10-07T14:48:12.827 回答