2016-02-03 30 views
1

我有一個腳本,當我點擊分配的按鈕時,添加一個參數到網址 - 下一步點擊替換它一個新的參數 - 這工作很好。替換並添加3個不同的參數到網址

但是 - 現在我有三個按鈕 - 我希望每個按鈕爲網址分配一個參數 - 並替換任何其他按鈕添加的參數。它也需要放在已經存在的參數後面。

這樣:?

(button1) click3: /m4n?ecom-query=imac&seid=etailer-products&viewMode=3?param=grid 
(button2) click4: /m4n?ecom-query=imac&seid=etailer-products&viewMode=3?param=list 
(button3) click5: /m4n?ecom-query=imac&seid=etailer-products&viewMode=3?param=smalllist 

網址前參數是動態的,可以看看不同。

$('.click2').on('click', function() { 
    console.log("Clicked"); 
    var url = window.location.pathname; 
    var url = window.location.href; 
    if (url.indexOf('?param=list') > -1) { 
     url = url.replace("?param=list", "") + '?param=grid' 
    } else { 
     url = url.replace("?param=grid", "") + '?param=list' 
    } 
    window.location.href = url; 
}); 

如何做到這一點,我試圖修改我現有的腳本,但沒有運氣。

回答

1

我覺得這是一個小錯誤在你的方法: 在URL中的所有參數應與& 連接所以現在你的URL看起來應該

/m4n?ecom-query=imac&seid=etailer-products&viewMode=3&param=grid 

現在如果要更換舊的嬰兒車,您還需要刪除舊值。對於您可以在下面的代碼使用正則表達式作爲

url = url.replace(/\&param=.*/,'') + '&param=list' 

所以完整的代碼是:

$('.click2').on('click', function() { 
    console.log("click2 Clicked"); 
    var url = window.location.href; 
    url = url.replace(/\&param=.*/,'') + '&param=list'; 
    window.location.href = url; 
}); 

希望它可以幫助

+0

是啊,這完美的作品。謝謝你的解釋 - 這看起來很簡單! –