2017-02-18 58 views
1

我正在练习制作电子商务网站。我努力在购物车页面和结帐页面之间传递我的JavaScript变量。我尝试下面这个例子:Java脚本:在html页面之间传递变量

page one: 
 
<a href="example2.html?myVar1=42&myVar2=66" >LINK</a> 
 

 
page 2: 
 

 
var qs = new Querystring(); 
 

 
var v1 = qs.get("myVar1"); 
 

 
var v2 = qs.get("myVar2");

我无法得到它的工作,因为我的网页上扔了约不能识别查询字符串错误,所以目前我正在试图像这样通过使用window.localStorage作为如下:

Page 01: 
 

 
<button class="checkout" type="button" onClick="window.location.href='checkout.html'; window.localStorage.setItem("total",total)">Checkout</button> 
 

 

 
Page 2: 
 

 
var name = window.localStorage.getItem("total");
目前,我扔在第二页上的console.log(总),但它返回“空”每一次。任何想法为什么它没有捕捉到第一页的价值?请帮忙。 如果您有任何方法的建议或解决方案,将不胜感激。我觉得我真的很接近第二种方法,我可能只是在页面1部分丢失了一些东西,这要提前感谢。

+0

当使用'localStorage'是不是不合理的解决方案,你不是真的在html中内嵌javascript的东西是你吗?此外,如果您要使用localStorage,则最好检查它是否适用于用户,如果不是,则优雅地失败。该页面提供了一个很好的示例,说明如何检查它是否可用:https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API – JakeParis

+0

“无法启用它”是什么意思?你的片段不是真的有效 – pvg

+0

'queryString()'不是一个内置的javascript函数。您可能想查看'window.location.search'查询字符串。 – JakeParis

回答

1

要解决的第一个方法(通过查询字符串页面之间传递变量),你可能想是这样的:

// page one: 
<a href="example2.html?myVar1=42&myVar2=66" >LINK</a> 

// page 2: 

var query = window.location.search; 
if(typeof query !== 'undefined') { 
    var params = {}, 
     parts 
    ; 
    // take off the ? and split into groups of key=value strings 
    query = query.replace('?','').split('&'); 

    // split key=value strings into a usable object 
    for(var i=0;i<query.length;i++){ 
     parts = query[i].split('='); 
     params[ parts[0] ] = parts[1]; 
    } 

    // now access your variables like so: 

    params.myVar1 // is now "42" (a string) 
    params.myVar2 // "66" 

} 
+0

在现代浏览器上,你可以使用'URL'对象,或者是一个库(这是我认为这张海报正在尝试,但它不知道为他们工作)。攻击你自己的查询字符串解析器是不必要的,并且可能是一个糟糕的主意,因为有大量的事情可能会出错。看看http://unixpapa.com/js/querystring.html – pvg

+0

'URLSearchParams'似乎并不适用于大量桌面和移动浏览器。 – JakeParis