2012-01-14 16 views
30

JavaScriptで現在のURLを変更するにはどうすればよいですか?私のウェブサイト上で

http://mywebsite.com/1.html 

私は、URLの最後の部分を取得するために

window.location.pathname 

を使用したい:

1.html 

と私は数字にすべての私のウェブページを持っているので、現在のURLに1を追加して、ボタンをクリックすると次のページにリダイレクトされるようにします:

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

これはなぜ機能しないのでしょうか?

+0

URLに1を追加するだけです。あなたはファイル名の数字部分をインクリメントする必要があります - #.html – Mark

答えて

30

"1.html"のような文字列に1を追加しようとしているため、この例は機能しませんでした。それはちょうどあなたにあなたが望むものではないこの "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のために働くだろうし、あなたのように、必要に応じて軽く異なるURLフォームを使用すると、正規表現を微調整することができます。

+1

魅力としての仕事をありがとう –

+2

私はあなたに感謝するほどの言葉があるとは思わない:) –

0

でも、それはあなたがこのヒントを試してみたいものを行うための良い方法ではありません。 するvar URL =何をやっていることは「1」を追加しているNUMER FIRST

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

彼らはあなたが数字を得る方法を示すことを期待していたと思います。 –

+0

はい、それは本当ですが、質問と一般的な問題を見てください... – albanx

0

されなければなりません(文字列)をあなたのURLに追加します。ページ1.htmlのページ2.htmlへのリンクが必要な場合は、文字列のうち1を取り出し、それに1を加えて文字列を再構成する必要があります。

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

NEXTPAGE、この場合にはURL 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が複数の番号を持っている場合、それは最後の1を変更します:

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

それは、先行ゼロの数字をサポートしています。

http://mywebsite.com/0001.html 

Example

関連する問題