2012-01-14 49 views
30

Trên trang web của tôi:Làm cách nào để thay đổi URL hiện tại trong javascript?

http://mywebsite.com/1.html 

Tôi muốn sử dụng

window.location.pathname 

để có được những phần cuối cùng của url:

1.html 

và kể từ khi tôi có tất cả các trang web của tôi trong số Tôi muốn thêm 1 vào url hiện tại để khi tôi nhấp vào nút, nó sẽ chuyển hướng tôi đến trang tiếp theo:

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

bất kỳ ý tưởng nào tại sao điều này không hoạt động?

+0

Bạn chỉ cần thêm 1 vào url. Bạn cần phải tăng phần số của tên tệp - # .html – Mark

Trả lời

30

Ví dụ của bạn không hoạt động vì bạn đang cố gắng thêm 1 vào chuỗi giống như sau: "1.html". Điều đó sẽ chỉ giúp bạn có được "1.html1" mà không phải là những gì bạn muốn. Bạn phải cô lập phần số của chuỗi và sau đó chuyển đổi nó thành một số thực tế trước khi bạn có thể làm toán trên đó. Sau khi nhận được nó đến một số thực tế, sau đó bạn có thể tăng giá trị của nó và sau đó kết hợp nó trở lại với phần còn lại của chuỗi.

Bạn có thể sử dụng một tùy chỉnh thay thế chức năng như thế này để cô lập các phần khác nhau của URL gốc và thay số bằng một số tăng lên:

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

Sau đó bạn có thể gọi nó như thế này:

window.location.href = nextImage(); 

Bản trình diễn tại đây: http://jsfiddle.net/jfriend00/3VPEq/

Điều này sẽ hoạt động cho bất kỳ URL nào kết thúc bằng một số chữ số tiếp theo .html và nếu bạn cần hình thức URL khác nhau nhẹ, bạn chỉ có thể tinh chỉnh biểu thức chính quy.

+1

Cảm ơn công việc của mình là quyến rũ –

+2

Tôi không nghĩ để có đủ lời cảm ơn bạn :) –

0

Thậm chí nó không phải là một cách tốt để làm những gì bạn muốn thử gợi ý này: var url = PHẢI LÀ MỘT numer FIRST

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

Tôi đoán là họ đang mong bạn hiển thị cách lấy số. –

+0

vâng, đó là sự thật, nhưng nhìn vào câu hỏi và vấn đề nói chung ... – albanx

0

gì bạn đang làm là gắn thêm một "1" (chuỗi) vào URL của bạn. Nếu bạn muốn liên kết trang 1.html đến trang 2.html bạn cần phải lấy 1 trong chuỗi, thêm một vào nó, sau đó nối lại chuỗi.

Tại sao không làm một cái gì đó như thế này:

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

Nextpage sẽ chứa url http://mywebsite.com/2.html trong trường hợp này. Nên dễ dàng đặt vào một chức năng nếu cần thiết.

1

Đây là mạnh mẽ hơn:

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(''); 

Khi URL có nhiều số, nó sẽ thay đổi mới nhất:

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

Nó hỗ trợ số với số không hàng đầu:

http://mywebsite.com/0001.html 

Example

Các vấn đề liên quan