Warum bekomme ich ...
Nicht erfasster TypeError: string.split ist keine Funktion
... wenn ich renne ...
var string = document.location;
var split = string.split('/');
Warum bekomme ich ...
Nicht erfasster TypeError: string.split ist keine Funktion
... wenn ich renne ...
var string = document.location;
var split = string.split('/');
Antworten:
Ändere das...
var string = document.location;
dazu ...
var string = document.location + '';
Dies liegt daran, dass document.location
es sich um ein Standortobjekt handelt . Die Standardeinstellung .toString()
gibt den Speicherort in Zeichenfolgenform zurück, sodass die Verkettung dies auslöst.
Sie können auch document.URL
eine Zeichenfolge abrufen.
toString()
statt einer hackigen Verkettung anzurufen?
+ ''
ist ein ziemlich häufiger Trick für Zwang, aber einige Leute bevorzugen die toString()
Methode. Ich würde es nicht als hackiger betrachten, als das Unäre +
für die Zahlenkonvertierung zu verwenden .
parseInt()
und parseFloat()
. Es gibt auch Number()
. Das +
ist natürlich kürzer, aber weniger lesbar für jemanden, der nicht an Hacky-Code gewöhnt ist oder weniger Erfahrung hat.
+ ''
Methode ändert für mich in Chrome Browser nichts, toString()
tut es aber .
Führen Sie dies aus
// you'll see that it prints Object
console.log(typeof document.location);
du willst document.location.toString()
oderdocument.location.href
document.location
ist keine Zeichenfolge.
Sie möchten wahrscheinlich document.location.href
oder document.location.pathname
stattdessen verwenden.
In Klausel wenn verwenden ()
. Beispielsweise:
stringtorray = "xxxx,yyyyy,zzzzz";
if (xxx && (stringtoarray.split(',') + "")) { ...
document.location
ist ein Objekt. Versuchen Sie:var string=document.location.href