2012-10-27 13 views
7

में "ऑर्डर" कितना विश्वसनीय है मैं इस विषय के बारे में कुछ समय के लिए सोच रहा हूं। सवाल में तरीकों निम्नलिखित हैं:प्रश्नोत्तरी नोडलिस्ट

  • getElementsByTagName
  • getElementsByClassName
  • getElementsByName
  • querySelectorAll

जहाँ तक मुझे पता है, उन डोम तरीकों केवल तरीकों जो करने में सक्षम हैं कर रहे हैं जमे हुए या NodeLists वापस लौटें। उन तरीकों के लिए, आदेश डब्ल्यू 3 सी spec द्वारा परिभाषित किया गया है। उदाहरण के लिए, http://www.w3.org लिखते NodeLists द्वारा querySelectorAll

querySelectorAll() दस्तावेज़ पर तरीकों लौटे निम्नलिखित, DocumentFragment, और तत्व इंटरफेस एक NodeList की subtrees भीतर मिलान तत्व नोड्स के सभी लौटाएगा संदर्भ नोड, दस्तावेज़ आदेश में। यदि कोई मिलान नोड्स नहीं हैं, तो विधि को एक खाली नोडलिस्ट लौटा देना चाहिए।

हालांकि, मैं अन्य तरीकों मैंने कहा के लिए समान स्पष्ट विनिर्देशों नहीं पा सके। मेरे सवालों का यहां हैं:

  • वहाँ एक परिभाषित आदेश (सबसे अधिक संभावना दस्तावेज़ क्रम) परिणाम के लिए है?
  • उन चश्मा कितने विश्वसनीय और क्रॉस-ब्राउज़र लागू किए गए हैं?

पूर्ण स्पष्ट है:

<div>this</div> 
<div>is</div> 
<div>a demo</div> 

// is this always guaranteed to be "<div>is</div>" 
document.querySelectorAll('div')[1] 
+0

+1, बहुत ही रोचक सवाल। – saji89

+2

चाहे यह कैसे/कैसे spec में परिभाषित किया गया है, कल्पना करें कि कोई गारंटी आदेश नहीं था। इंडेक्स किए गए संदर्भों का कोई मतलब नहीं होगा, बहुत पहले छोड़ दिया गया होगा, और जब भी किसी इंडेक्स गारंटी की आवश्यकता होती है तो हर कोई डीओएम में सभी 'बाल नोड्स' के माध्यम से घूमता है। मैंने परिणाम के क्रम में किसी भी भिन्नता WRT को इंगित करने के लिए संकेत देने के लिए कुछ भी नहीं देखा है। –

+0

... * * तत्वों में भिन्नता भिन्नता एक अलग कहानी है। –

उत्तर

4

हां। वे सभी दस्तावेज़ आदेश/वृक्ष आदेश में हैं।

  • getElementsByName (DOM Level-2-HTML) की ओर से एक NodeList
  • querySelectorAll (Selectors API) की ओर से एक NodeList
  • getElementsByTagName (DOM) की ओर से एक HTMLCollection
  • getElementsByClassName (DOM) की ओर से एक HTMLCollection
  • "दस्तावेज़ क्रम में"

HTMLCollections और NodeLists दोनों

तत्वों tree order में हल कर रहे हैं के लिए निर्दिष्ट कर रहे हैं।

जब उन्हें इंडेक्स के माध्यम से एक्सेस किया जाता है।

मुझे लगता है कि उन चश्मे (भले ही लिंक किए गए संस्करण कुछ कार्यान्वयन से नए हो सकते हैं) विश्वसनीय रूप से सभी ब्राउज़रों द्वारा कार्यान्वित किए जाते हैं, क्योंकि ज्यादातर पेड़ आदेश सबसे तार्किक और आसान कोड है। फिर भी, आपको यह देखने की आवश्यकता हो सकती है कि कुछ ब्राउज़र विभिन्न तत्व से सूचियों को वापस कर सकते हैं क्योंकि उनके नोड्स के मिलान अलग-अलग हैं। तत्व के name को निर्धारित करते समय मैं कुछ quirks के बारे में सोच सकता था।

+0

तो यह है कि यह कैसे "होना चाहिए"। Realworld कार्यान्वयन के बारे में क्या? मुझे वास्तव में यह जानने की ज़रूरत है कि ब्राउज़र और संस्करणों (मोबाइल और डेस्कटॉप) की एक विस्तृत श्रृंखला में कितनी भरोसेमंद है –

+0

मेरे पास कोई आंकड़े नहीं हैं और केवल अनुमान लगा सकते हैं, लेकिन मैंने कभी ब्राउज़र से अलग होने के बारे में कभी नहीं सुना है। बड़े लोग यह सुनिश्चित करने के लिए सही करते हैं। – Bergi

+0

किस एल्गोरिदम के लिए आपको निश्चित क्रम के लिए सही क्रम जानने की आवश्यकता है, बीटीडब्ल्यू? – Bergi

संबंधित मुद्दे