Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   JavaScript: .replace не работает - нестандартный случай (https://javascript.ru/forum/dom-window/63992-javascript-replace-ne-rabotaet-nestandartnyjj-sluchajj.html)

-_Gleb_- 13.07.2016 08:35

JavaScript: .replace не работает - нестандартный случай
 
Нет, на этот раз дело не в том, что я не объявил переменную перед выражением с .replace . :)

Если не вдаваться в детали, зачем мне это, то задача следующая: вне зависимости от того, на локольном или удалённом сервере находится сайт, сохранить в значение переменной имя текущего файла без разрешения.

Вот такой код:

var fileName = location.href.split("/").slice(-1); // Значение проверил, выводит, например, "info.php"

    if (fileName == "#" ||  fileName == "") {var fileName="index";} // Если страница - начальная
    else{
        //alert(fileName); // позиция 1
        fileName = fileName.replace(/\.php$/i,'');
        alert(fileName); // позиция 2

    }


Если мы находимся не на главной странице (index.php), то мы попадаем в else. Я убедился, что это работает через alert(fileName); в позиции 1. Однако в позиции 2 - уже не работает, т. е. окна нет вообще. Никаких сообщений об ошибке.

Такой код:

fileName="info.php"; // на этот раз введём имя файла вручную
fileName=fileName.replace(/\.php$/i,''); // 1 в 1 с предыдущим кодом

alert(fileName);


я проверил на jsfiddle; там всё работает.

В чём может быть дело?

kiff86 13.07.2016 11:55

ну суть в том что в fileName у тебя object:
проверь так:
//alert(typeof fileName); // позиция 1


а replace все же к строке)

kiff86 13.07.2016 11:59

используй вместо alert - console.log()
Там сразу видно что у тебя:
['index.php']


следовательно:

var fileName = location.href.split("/").slice(-1)[0];


решит проблему

-_Gleb_- 14.07.2016 03:21

Спасибо, всё действительно работает!


Часовой пояс GMT +3, время: 18:41.