2010-07-26 16 views
13

दोनों दस्तावेज़ .getElementsByTagName ('div') और document.querySelectorAll ('div') नोडलिस्ट संग्रह लौटाते हैं। केवल अंतर यह है कि पहली विधि लाइव-संग्रह और दूसरा एक लौटाती है - एक स्थिर।लाइव और गैर-लाइव नोडलिस्ट संग्रह के बीच अंतर कैसे करें?

सवाल यह है कि - (- "जीवंतता" परीक्षण करने के लिए कुछ आइटम निकालें जोड़ने की कोशिश कर नहीं/यानी) वहाँ केवल इन वस्तुओं का निरीक्षण के माध्यम से एक-दूसरे वस्तु भेद करने के लिए किसी भी अवसर है?

धन्यवाद अग्रिम

उत्तर

6

में NodeList इंटरफ़ेस अपने मृत या जीवित स्थिति के नास्तिक है।

interface NodeList { 
    Node item(in unsigned long index); 
    readonly attribute unsigned long length; 
}; 

यह केवल एक संपत्ति length, एक प्रणाली की item शामिल तो मुझे डर है कि यह वर्तमान में संभव निर्धारित करने के लिए एक वस्तु डोम जोड़ तोड़ और प्रभाव देखे बिना जीना है अगर नहीं हूँ।

+0

अनुराग (एफएफ/क्रोम में), इस सवाल का जवाब – shabunc

+0

आपका स्वागत है, और एक बहुत ही दिलचस्प सवाल के लिए धन्यवाद। क्या कोई विशिष्ट कारण है कि आप वस्तु के * liveness * का निरीक्षण क्यों करना चाहते हैं? यदि कारण अच्छा है और वास्तविक समस्याओं को हल करता है, तो यह w3 पर spec लेखकों को भी प्रस्तावित कर सकता है। – Anurag

+0

'document.querySelectorAll' एक 'स्टेटिक नोडलिस्ट' देता है, जो परिभाषा के अनुसार" लाइव "नहीं है। 'नोडलिस्ट' से पूछताछ करने में सक्षम नहीं होने के बावजूद, मुझे आश्चर्य है कि सम्मेलन द्वारा 'नोडलिस्ट' मानना ​​सुरक्षित है, * हमेशा * लाइव है। –

6
a=document.querySelectorAll('a'); 
b=document.getElementsByTagName('a'); 

a.toString() == "[object NodeList]" 
b.toString() == "[object HTMLCollection]" 

+1

यह संयोगजनक है, निश्चित नहीं है। ' document.getElementsByName ('link')। toString() == "[ऑब्जेक्ट नोडलिस्ट]" और यह लाइव है – chiliNUT

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