Почему я получаю ...
Uncaught TypeError: string.split не является функцией
... когда я бегу ...
var string = document.location;
var split = string.split('/');
Почему я получаю ...
Uncaught TypeError: string.split не является функцией
... когда я бегу ...
var string = document.location;
var split = string.split('/');
Ответы:
Измените это ...
var string = document.location;
к этому...
var string = document.location + '';
Это потому, что document.location
это объект Location . По умолчанию .toString()
местоположение возвращается в строковой форме, поэтому конкатенация вызовет это.
Вы также можете использовать document.URL
для получения строки.
toString()
вместо хакерской конкатенации?
+ ''
довольно распространенный прием для приведения строк, но некоторые люди предпочитают этот toString()
метод. Я бы не считал это более хакерским, чем использование унарных +
чисел для преобразования чисел.
parseInt()
и parseFloat()
. Также есть Number()
. +
Короче конечно, но менее читабельным для кого - то не используется для Hacky кода или менее опытных.
+ ''
метод ничего не меняет в браузере Chrome, но меняет toString()
.
запустить это
// you'll see that it prints Object
console.log(typeof document.location);
ты хочешь document.location.toString()
илиdocument.location.href
document.location
не строка.
Вы, вероятно, захотите использовать document.location.href
или document.location.pathname
вместо него.
В clausule if используйте ()
. Например:
stringtorray = "xxxx,yyyyy,zzzzz";
if (xxx && (stringtoarray.split(',') + "")) { ...
document.location
это объект. Попробуйте:var string=document.location.href