如何在javascript中更改当前URL?

时间:2012-01-14 23:07:28

标签: javascript

在我的网站上:

http://mywebsite.com/1.html

我想使用

window.location.pathname

获取网址的最后一部分:

1.html

由于我的所有网页都有数字,我想在当前网址中添加1,这样当我点击一个按钮时,它会将我重定向到下一页:

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

为什么这不起作用的任何想法?

4 个答案:

答案 0 :(得分:31)

您的示例无效,因为您尝试将1添加到如下所示的字符串:“1.html”。这只会让你得到这个“1.html1”,这不是你想要的。您必须隔离字符串的数字部分,然后将其转换为实际数字,然后才能对其进行数学运算。在获得实际数字后,您可以增加其值,然后将其与字符串的其余部分合并。

您可以使用这样的自定义替换功能来隔离原始网址的各个部分,并使用递增的数字替换该数字:

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结尾的网址,如果您需要稍微不同的网址表单,则可以调整正则表达式。

答案 1 :(得分: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('');

当网址有多个号码时,它会更改最后一个:

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

它支持带前导零的数字:

http://mywebsite.com/0001.html

Example

答案 2 :(得分:0)

即使这不是一个做你想做的事情的好方法尝试这个提示: var url =必须是第一个

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

答案 3 :(得分:0)

你正在做的是追加&#34; 1&#34; (字符串)到您的URL。如果你想要页面2.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';
在这种情况下,

nextPage将包含网址http://mywebsite.com/2.html。如果需要,应该很容易放入一个功能。