Neden alıyorum ...
Yakalanmamış TypeError: string.split bir işlev değil
... koştuğumda ...
var string = document.location;
var split = string.split('/');
Neden alıyorum ...
Yakalanmamış TypeError: string.split bir işlev değil
... koştuğumda ...
var string = document.location;
var split = string.split('/');
Yanıtlar:
Bunu değiştir...
var string = document.location;
buna...
var string = document.location + '';
Bunun nedeni document.location
, bir Location nesnesi olmasıdır . Varsayılan .toString()
, konumu dize biçiminde döndürür, böylece birleştirme bunu tetikler.
document.URL
Bir dizge almak için de kullanabilirsiniz .
toString()
Hacky birleştirme yerine aramak daha temiz olmaz mıydı ?
+ ''
, sicim zorlaması için oldukça yaygın bir numaradır, ancak bazı insanlar toString()
yöntemi tercih eder . +
Sayı dönüşümü için tekli kullanmaktan daha hantal olduğunu düşünmüyorum .
parseInt()
ve parseFloat()
. Ayrıca var Number()
. +
Hacky kodu veya az deneyimli alışık olmayan biri için elbette daha kısa, ancak daha az okunabilir.
+ ''
yöntem Chrome Tarayıcıda benim için bir şey değişmez değil, toString()
yok.
bunu çalıştır
// you'll see that it prints Object
console.log(typeof document.location);
istiyorsun document.location.toString()
ya dadocument.location.href
document.location
dizge değil.
Muhtemelen kullanmak istiyorsun document.location.href
ya da document.location.pathname
onun yerine.
Clausule if, kullanın ()
. Örneğin:
stringtorray = "xxxx,yyyyy,zzzzz";
if (xxx && (stringtoarray.split(',') + "")) { ...
document.location
bir nesnedir. Deneyin:var string=document.location.href