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.locations'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.URLpour 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.hrefou à la document.location.pathnameplace.
En clausule si, utilisez (). Par exemple:
stringtorray = "xxxx,yyyyy,zzzzz";
if (xxx && (stringtoarray.split(',') + "")) { ...
document.locationest un objet. Essayez:var string=document.location.href