複数ページにまたがる記事コンテンツの現在のページのURLを取得し、そのURLの一部を置換して出力させたいです。
取得URL
https://example.com/pagetype/pageID/page/paged/
(pageIDには記事コンテンツごとの固有の数値が、pagedには現在のページ数が入ります。)
このURLのpaged(現在のページ数)を、1から指定の数値までの連番に置き換えます。
この時、ほとんどのページでは正しく取得し、置換できるのですが、pageIDの末尾とpagedの数値が同じになったとき、pagedが置換されず、pageIDの末尾が置換されてしまいます。
例)https://example.compagetype/116/page/6/
この/page/6/を1~7までの連番に置換したいとき、
https://example.com/pagetype/116/page/1/
https://example.com/pagetype/116/page/2/
…
https://example.com/pagetype/116/page/7/
となるべきはずが、
https://example.com/pagetype/111/page/6/
https://example.com/pagetype/112/page/6/
…
https://example.com/pagetype/117/page/6/
と、pageIDの末尾が置換されてしまう
以下のコードを使って置換しています。
javascript
1var nowURL = location.protocol + '//' + location.host + location.pathname; //現在のURL 2var paegmax = //現在の記事の最大ページ数をページネーションから取得してます(省略) 3 4if(nowURL.split('/')[3] == 'pagetype') { //2階層目がpagetypeのときのみ取得・置換します 5 for(var i = 1; i <= pagemax; i++){ 6 if(nowURL.split('/')[5] == 'page') { //2ページ目以降で取得するとき 7 url[i] = nowURL.replace(nowURL.slice(-2), i); 8 } else { //1ページ目で取得するとき 9 url[i] = nowURL + '/page/' + i 10 } 11 } 12}
また、replaceで置換する場所の指定を、.slice()から.split()に変えてみたところ、今度はpageIDの下2ケタ目がpagedと一致したときにpageIDが書き換わってしまいます。
例)https://example.com/pagetype/161/page/6/を取得したら、/pagetype/111/page/6/~/pagetype/171/page/6/に置換される
javascript
1var nowURL = location.protocol + '//' + location.host + location.pathname; //現在のURL 2var paegmax = //現在の記事の最大ページ数をページネーションから取得してます(省略) 3 4if(nowURL.split('/')[3] == 'pagetype') { 5 for(var i = 1; i <= pagemax; i++){ 6 if(nowURL.split('/')[5] == 'page') { 7 url[i] = nowURL.replace(nowURL.split('/')[6] , i); //ここを変更 8 } else { 9 url[i] = nowURL + '/page/' + i 10 } 11 } 12}
pageIDにpagedと同じ数字が入っていても、正しく置換するための解決策がありましたら、ぜひご教授お願いいたします。
回答1件
あなたの回答
tips
プレビュー