Подтвердить что ты не робот

Как изменить текущий 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;  
}

любые идеи, почему это не работает?

4b9b3361

Ответ 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 в этом случае. Должно быть легко добавить функцию, если это необходимо.