क्या त्रुटि हो रही है `string.split एक फ़ंक्शन नहीं है?


110

मुझे क्यों मिल रहा है ...

बिना पढ़ा हुआ टाइपर्रर: string.split एक फंक्शन नहीं है

... जब मैं दौड़ता हूँ ...

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


2
document.locationएक वस्तु है। कोशिश करें:var string=document.location.href
तेमु

जवाबों:


212

इसे बदलो...

var string = document.location;

इसके लिए...

var string = document.location + '';

ऐसा इसलिए है क्योंकि document.locationएक स्थान ऑब्जेक्ट है । डिफ़ॉल्ट .toString()स्थान को स्ट्रिंग रूप में लौटाता है, इसलिए संघनन उसे ट्रिगर करेगा।


आप document.URLएक स्ट्रिंग प्राप्त करने के लिए भी उपयोग कर सकते हैं ।


57
क्या toString()हैकी कॉन्सैप्टेशन के बजाय कॉल करना साफ नहीं होगा ?
कापा

2
@ bažmegakapa: हाँ, यह वरीयता का मामला है। + ''स्ट्रिंग बलात्कार के लिए एक सुंदर आम चाल है, लेकिन कुछ लोगों को पसंद करते हैं toString()विधि। मैं +संख्या रूपांतरण के लिए यूरीरी का उपयोग करने की तुलना में इसे अधिक हैक करने पर विचार नहीं करूंगा ।

3
वह उतना ही कुरूप है। नहीं है parseInt()और parseFloat()। भी है Number()+Hacky कोड या कम अनुभवी के लिए इस्तेमाल नहीं किसी के लिए निश्चित रूप से कम है, लेकिन कम पढ़ी जा सकती है।
कापा

+ ''विधि Chrome ब्राउज़र में मेरे लिए कुछ भी नहीं बदलता है, लेकिन toString()करता है।
मार्टिन श्नाइडर

@ एमए-मैडिन: क्या आपने किया my_string + "".split()? यदि ऐसा है, तो आप की +तुलना में कम पूर्वता की आवश्यकता है .। तो इस तरह से:(my_string + "").split()

66

शायद

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

आप वर्तमान url चाहते हैं


12

इसे चलाओ

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

आप चाहते हैं document.location.toString()याdocument.location.href


धन्यवाद। मुझे महसूस नहीं हुआ कि मैंने अपने संस्करण को स्ट्रिंग से ऑब्जेक्ट में परिवर्तित कर दिया है। आपके समाधान ने मुझे अपना कोड वापस जांचने का विचार दिया।
sg552

7

document.location एक तार नहीं है।

आप शायद उपयोग करना चाहते हैं document.location.hrefया document.location.pathnameइसके बजाय।


जबरदस्त हंसी। एक ही समय में 4 उत्तर (कम से कम)। मुझे SO :) पर नवीनतम प्रश्नों पर ध्यान नहीं देना चाहिए
Denys Séguret

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.