Pourquoi est-ce que je reçois ...
Uncaught TypeError: string.split n'est pas une fonction
... quand je cours ...
var string = document.location;
var split = string.split('/');
Pourquoi est-ce que je reçois ...
Uncaught TypeError: string.split n'est pas une fonction
... quand je cours ...
var string = document.location;
var split = string.split('/');
Réponses:
Change ça...
var string = document.location;
pour ça...
var string = document.location + '';
C'est parce qu'il document.location
s'agit d'un objet Location . La valeur par défaut .toString()
renvoie l'emplacement sous forme de chaîne, donc la concaténation le déclenchera.
Vous pouvez également utiliser document.URL
pour obtenir une chaîne.
toString()
au lieu d'une concaténation hacky?
+ ''
est une astuce assez courante pour la coercition de chaînes, mais certaines personnes préfèrent la toString()
méthode. Je ne le considérerais pas plus piraté que d'utiliser l'unaire +
pour la conversion de nombres.
parseInt()
et parseFloat()
. Il y a aussi Number()
. Le +
est plus court bien sûr, mais moins lisible pour quelqu'un qui n'a pas l'habitude de pirater du code ou qui est moins expérimenté.
+ ''
méthode ne change rien pour moi dans le navigateur Chrome, mais le toString()
fait.
lance ça
// you'll see that it prints Object
console.log(typeof document.location);
tu veux document.location.toString()
oudocument.location.href
document.location
n'est pas une chaîne.
Vous souhaitez probablement utiliser document.location.href
ou à la document.location.pathname
place.
En clausule si, utilisez ()
. Par exemple:
stringtorray = "xxxx,yyyyy,zzzzz";
if (xxx && (stringtoarray.split(',') + "")) { ...
document.location
est un objet. Essayez:var string=document.location.href