Как изменить текущий URL-адрес в javascript?
На моем веб-сайте:
http://mywebsite.com/1.html
Я хочу использовать
window.location.pathname
чтобы получить последнюю часть URL:
1.html
и поскольку у меня есть все мои веб-страницы в цифрах, я хочу добавить 1 к текущему URL-адресу, чтобы при нажатии кнопки он перенаправил меня на следующую страницу:
var url = 'http://mywebsite.com/' + window.location.pathname;
function nextImage (){
url = url + 1;
}
любые идеи, почему это не работает?
Ответы
Ответ 1
Ваш пример не работал, потому что вы пытаетесь добавить 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/
Это будет работать для любого URL-адреса, который заканчивается рядом цифр, за которыми следует .html, и если вам нужна немного другая форма URL-адреса, вы можете просто настроить регулярное выражение.
Ответ 2
Это более надежное:
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
Пример
Ответ 3
Даже это не очень хороший способ сделать то, что вы хотите, попробовать этот намек:
var url = ДОЛЖЕН БЫТЬ ЧИСЛАМ ПЕРВЫЙ
function nextImage (){
url = url + 1;
location.href='http://mywebsite.com/' + url+'.html';
}
Ответ 4
То, что вы делаете, - это добавить к URL-адресу "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';
nextPage будет содержать URL http://mywebsite.com/2.html в этом случае. Должно быть легко добавить функцию, если это необходимо.