2017-02-18 96 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