Заменить строку в URL с помощью JavaScript - PullRequest
1 голос
/ 05 сентября 2010

Я думал, что это тривиально, но не мог решить: (

Я хочу изменить параметр, переданный в mu url, с помощью javascript.

var fullurl = window.location;
//do dome stuff to find var url.
fullurl.replace(/sort:.*\/direction:.*/g,'sort:' + url + '/direction:asc');

В основном есть URL, например: http://example.com/article/ или http://example.com/article/sort:author/direction:asc

В первом случае я не хочу ничего менять. Во втором я хочу заменить sort: на sort:url.

приведенный выше код, похоже, ничего не делает. Я думаю, проблема в том, что регулярное выражение не анализируется, и оно возвращает URL с .* и \/ внутри

любая помощь? спасибо

Ответы [ 2 ]

1 голос
/ 05 сентября 2010

window.location - объект, содержащий следующие свойства:

.hash
.host
.hostname
.href
.pathname
.port
.protocol
.search

Вы, вероятно, хотите проанализировать строку href. Я сделал предварительный тест, где я озвучил ожидание URL, и замена сработала, за исключением того, что вы не указываете, что такое url. В противном случае попробуйте следующее в консоли:

x = window.location.href
url = "SomeValue"
y = x.replace(/sort:.*\/direction:.*/g, 'sort:' + url + '/direction:asc')

вы должны получить ожидаемый результат, предполагая, что вы проверяете y, а не x, поскольку операция замены возвращает результат и не изменяет сам объект.

1 голос
/ 05 сентября 2010

window.location это не строка, это специальный объект, который неявно преобразуется в строку. Далее, string.replace возвращает новое значение, оно не меняет исходную строку. Попробуйте что-то вроде этого:

var fullurl = window.location.toString();
//do dome stuff to find var url.
window.location = fullurl.replace(/sort:.*\/direction:.*/g,'sort:' + url + '/direction:asc');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...