通过JavaScript将变量从一个html页面传递到另一个页面

通过JavaScript将变量从一个html页面传递到另一个页面,javascript,html,variables,undefined,global,Javascript,Html,Variables,Undefined,Global,我有两页-“第1页”和“第2页”。在第1页上有一个文本框,其值为100,最后有一个按钮 通过按下按钮,我希望javascript将文本框的值保存在全局(?)变量中,并跳转到第2页。对于“window.onload”,我需要第二个Javascript函数来提醒在第1页保存的值 以下是我的Javascript代码: <script type="text/javascript"> var price; //declare outside the function = global var

我有两页-“第1页”和“第2页”。在第1页上有一个文本框,其值为100,最后有一个按钮

通过按下按钮,我希望javascript将文本框的值保存在全局(?)变量中,并跳转到第2页。对于“window.onload”,我需要第二个Javascript函数来提醒在第1页保存的值

以下是我的Javascript代码:

<script type="text/javascript">

var price; //declare outside the function = global variable ?

function save_price(){

    alert("started_1"); //just for information

    price = document.getElementById('the_id_of_the_textbox').value; 

    alert(price); //just for information         
}
我总是得到全局可变价格的“未定义”值

我读了很多关于这些全局变量的书。在这个页面:但是我不能让它工作


为什么这不起作用?

这里最好的选择是使用查询字符串“发送”值

  • 所以第1页重定向到page2.html?someValue=ABC
  • 第2页可以 读取查询字符串,特别是键“someValue”

如果这不仅仅是一个学习练习,你可能会想考虑这一点的安全含义。


全局变量在这里对您没有帮助,因为一旦重新加载页面,它们就会被销毁

您有几个不同的选择:

  • 您可以使用像SammyJS或Angularjs和ui路由器这样的SPA路由器,这样您的页面是有状态的
  • 使用会话存储来存储您的状态
  • 将值存储在URL哈希上
不阅读您的代码,只阅读您的场景,我将使用
localStorage
来解决。 下面是一个示例,我将使用
prompt()
作为缩写

第1页:

第2页:

window.onload = alert(localStorage.getItem("storageName"));
您也可以使用cookie,但localStorage允许更多的空间,并且当您请求页面时,它们不会发送回服务器。

有两个页面: Pageone.html:

<script>
var hello = "hi"
location.replace("http://example.com/PageTwo.html?" + hi + "");
</script>

var hello=“嗨”
位置。替换(“http://example.com/PageTwo.html?“+hi+”);
PageTwo.html:

<script>
var link = window.location.href;
link = link.replace("http://example.com/PageTwo.html?","");
document.write("The variable contained this content:" + link + "");
</script>

var link=window.location.href;
链接=链接。替换(“http://example.com/PageTwo.html?","");
write(“包含此内容的变量:“+link+”);

希望有帮助

您误解了浏览器中JavaScript中的“全局变量”是什么。它们仍然绑定到设置它们的页面,它们不存在于其他页面中。全局变量仅对页面是全局的。也许可以看看url参数?@CBroe(和nha)谢谢!我不知道他们还被绑在书页上。我认为他们是“真正的”全球性的(对所有网页都有效)这是一个很好的解决方案,但你还没有解释为什么你应该使用它。OP不理解JS中的全局变量。@谢谢。一个真正伟大而简单的解决方案。:)我必须考虑(如LiamB所说)使用这个解决方案的一些基本安全性吗?@ CalbeeEdter,KRONDIED:LoalStury是每个域。其他网站无法访问您的localStorage,除非您包含来自其他来源(例如,Google Analytics)的其他脚本。会话存储在您关闭选项卡时过期。Cookie的过期时间比localStorage短。但是,如果数据包含敏感信息,您应该投资于后端交换方案,而不是直接存储在浏览器中,用户可以在我的页面2中查看、编辑等(就像cookies一样)。它说本地存储没有定义,我只是不存储它。。。在第2页上,
localStorage.getItem(“key”)
的结果是
null
@LiamB提出了一个很好的观点。我的建议和他的建议都有一个安全含义,即用户可以在应用程序之外更改值:通过更改querystring参数、散列参数、localStorage数据或其他方式。您应该始终在数据的后端服务上进行验证。如何在简单html中使用会话?
window.onload = function() {
   var getInput = prompt("Hey type something here: ");
   localStorage.setItem("storageName",getInput);
}
window.onload = alert(localStorage.getItem("storageName"));
<script>
var hello = "hi"
location.replace("http://example.com/PageTwo.html?" + hi + "");
</script>
<script>
var link = window.location.href;
link = link.replace("http://example.com/PageTwo.html?","");
document.write("The variable contained this content:" + link + "");
</script>