2012-01-14 34 views
30

在我的網站:如何在javascript中更改當前網址?

http://mywebsite.com/1.html 

我想用

window.location.pathname 

,以便獲得url的最後一部分:

1.html 

,因爲我有我的號碼的所有網頁我想爲當前網址添加1,這樣當我點擊一個按鈕時,它會將我重定向到下一頁:

var url = 'http://mywebsite.com/' + window.location.pathname; 
function nextImage(){ 
url = url + 1; 
} 

任何想法,爲什麼這是行不通的?

+0

您只需在網址中加1即可。你需要增加文件名的數字部分 - #.html – Mark 2012-01-14 23:20:19

回答

30

你的例子不起作用,因爲你試圖給看起來像這樣的字符串加1:「1.html」。這隻會讓你這個「1.html1」,這不是你想要的。您必須先隔離字符串的數字部分,然後將其轉換爲實際數字,然後才能對其進行數學運算。在獲得一個實際的數字後,你可以增加它的值,然後把它和字符串的其餘部分結合起來。

您可以使用自定義的替換功能像這樣用遞增的數字隔離各個部分的原始URL和替換次數:

function nextImage() { 
    return(window.location.href.replace(/(\d+)(\.html)$/, function(str, p1, p2) { 
     return((Number(p1) + 1) + p2); 
    })); 
} 

然後你可以這樣調用:

window.location.href = nextImage(); 

演示在這裏:http://jsfiddle.net/jfriend00/3VPEq/

這將爲在一些一連串的數字後面的.html結尾的網址工作,如果你需要作爲略有不同的URL形式,你可以調整正則表達式。

+1

謝謝你的工作作爲魅力 – 2012-01-15 00:14:54

+2

我不認爲有足夠的話來謝謝你:) – 2012-01-15 00:15:36

0

即使它不是做你想要嘗試這個提示什麼的好方法: VAR URL =必須是NUMER第一

function nextImage(){ 
url = url + 1; 
location.href='http://mywebsite.com/' + url+'.html'; 
} 
+0

我想他們希望你展示如何獲得數字。 – 2013-07-16 15:45:09

+0

是的,這是真的,但看一般的問題和問題... – albanx 2013-07-16 21:23:50

0

你在做什麼是附加一個「1」(串)到您的網址。如果你想要頁面1.html鏈接到頁面2.html,你需要從字符串中取出1,添加一個,然後重新組裝字符串。

爲什麼不能做這樣的事情:

var url = 'http://mywebsite.com/1.html'; 
var pageNum = parseInt(url.split("/").pop(),10); 
var nextPage = 'http://mywebsite.com/'+(pageNum+1)+'.html'; 

下一頁將包含在這種情況下,網址http://mywebsite.com/2.html。如果需要,應該很容易地放入一個功能。

1

這是更強大的:

mi = location.href.split(/(\d+)/); 
no = mi.length - 2; 
os = mi[no]; 
mi[no]++; 
if ((mi[no] + '').length < os.length) mi[no] = os.match(/0+/) + mi[no]; 
location.href = mi.join(''); 

當URL有多個號碼,它會改變最後一個:

http://mywebsite.com/8815/1.html 

它支持數字與前導零:

http://mywebsite.com/0001.html 

Example