Вопрос по javascript, jquery – Что вызывает ошибку `string.split не является функцией`?

77

Почему я получаю ...

Uncaught TypeError: string.split is not a function

... когда я бегу ...

<code>var string = document.location;
var split = string.split('/');</code>

document.location это объект. Пытаться:var string=document.location.href Teemu

Ваш Ответ

4   ответа
53

string = document.location.href;
arrayOfStrings = string.toString().split('/');

при условии, что вы хотите текущий URL

157

Изменить это ...

var string = document.location;

к этому...

var string = document.location + '';

Это потому чтоdocument.location этоМестоположение объекта, По умолчанию.toString() возвращает местоположение в строковой форме, так что конкатенация вызовет это.

Вы также можете использоватьdocument.URL чтобы получить строку.

Это так же некрасиво. ЕстьparseInt() а такжеparseFloat(), Существует такжеNumber(),+ короче, конечно, но менее читабельно для тех, кто не привык к хакерскому коду или менее опытен.
@ ba - megakapa: Да, это вопрос предпочтений.+ '' довольно распространенный прием для приведения строк, но некоторые люди предпочитаютtoString() метод. Я бы не посчитал это более хакерским, чем использование унарного+ для преобразования чисел.
Не будет ли чище звонитьtoString() вместо хакерской конкатенации?
+ '' метод ничего не меняет для меня в браузере Chrome, ноtoString() делает.
@ MA-Maddin: ты сделалmy_string + "".split()? Если да, то вам нужны парены+ имеет более низкий приоритет, чем., Ну вот так:(my_string + "").split()
3

document.location не является строкой.

Вы, вероятно, хотите использоватьdocument.location.href или жеdocument.location.pathname вместо.

лол. 4 ответа (как минимум) одновременно. Я не должен смотреть на новые вопросы о SO :)
9

// you'll see that it prints Object
console.log(typeof document.location);

ты хочешьdocument.location.toString() или жеdocument.location.href

Спасибо. Я не понял, что преобразовал свою переменную из строки в объект. Ваше решение дало мне идею проверить мой код.

Похожие вопросы