Javascript String.Replace не работает? - PullRequest
1 голос
/ 15 мая 2011

Я сейчас пытаюсь создать навигационную систему для сайта, который я создаю.Я потратил часы, пытаясь понять это, но я не понимаю, почему он не работает, я пытаюсь заменить все вхождения «index.html» переменными именами файлов.

function changeSideNav(filenames)
{   
    var urlarray = window.location.href.split("?");
    var url = urlarray[0];
    alert(url); // This returns "http://localhost/xxx/index.html"
    var urlspl = url.replace(/index.html/gi,filenames);
    alert(url.replace(/index.html/i,filenames) +'/'+ filenames); //This returns "http://localhost/xxx/index.html/newpage.html" (if pram was newpage.html).
    //i txpected it to return "http://localhost/xxx//newpage.html"
    //set a new source
    document.getElementById('SideNavIframe').src = urlspl +'/'+ filenames;
}

Редактировать: я нахожу этобыть странным: если я пытаюсь заменить «/index.html» вместо «index.html», он удаляет «/» из вывода, поэтому я получаю «http://localhost/xxxindex.html/newpage.html".

Ответы [ 3 ]

1 голос
/ 09 августа 2011

Не уверен, что это была ваша проблема. Но я застрял на этом в течение хорошего часа.

Вот оно:
str.replace("s1", "s2") ничего не делает для ул.

Вам нужно сделать:
str=str.replace("s1", "s2");

Обратите внимание, что LHS явно фиксирует результат замены.

Надеюсь, это поможет:)

0 голосов
/ 15 мая 2011

С http://www.devguru.com/technologies/ecmascript/quickref/regexp_special_characters.html:

Десятичная точка соответствует любому символ кроме новой строки персонаж. Так, например, с Строка "Кот ест моль" регулярное выражение /.t/gi будет соответствовать буквы «в» в «кот», «в» в «ест» и «ot» в «моли», но не начальная буква «Т» «The».

Итак, вы должны уйти от периода:

url.replace(/index\.html/gi,filenames)
0 голосов
/ 15 мая 2011

Вы указываете строку как регулярное выражение. Попробуйте указать подстроку в качестве 1-го параметра для replace (), например так:

var url = "http://localhost/xxx/index.html";
url.replace('index.html','changed.html');  // add 'gi' as 3rd param for all occurrences

См. Документы для String.replace

...