क्या त्रुटि हो रही है `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.