डोम में नोड्स के अधिकांश सूचियों (जैसे getElementsBy*
, querySelectorAll
, और Node.childNodes
से लौटे) सरल सारणी, बल्कि NodeList
ऑब्जेक्ट नहीं है। NodeList
ऑब्जेक्ट आमतौर पर "लाइव" होते हैं, दस्तावेज़ में उस परिवर्तन में Nodelist
ऑब्जेक्ट को स्वचालित रूप से प्रचारित किया जाता है।
तो (इसका अपवाद querySelectorAll
से परिणाम है, जो रहते नहीं है!) आप अपने उदाहरण में देख सकते हैं, अगर आप सभी a
तत्वों की एक NodeList पुनः प्राप्त है, तो दस्तावेज़ के लिए एक और a
तत्व जोड़ सकती है कि a
आपके नोडलिस्ट ऑब्जेक्ट में दिखाई देगा।
यही कारण है कि दस्तावेज़ में परिवर्तन करने के दौरान एक नोडलिस्ट के माध्यम से पुन: प्रयास करना असुरक्षित है। उदाहरण के लिए, यह कोड आश्चर्यजनक तरीकों से व्यवहार करेगा:
var NodeListA = document.getElementsByTagName('a');
for (var i=0; i<NodeListA.length; ++i) {
// UNSAFE: don't do this!
NodeListA[i].parentNode.removeChild(NodeListA[i]);
}
क्या होगा आप छोड़ने वाले तत्वों को समाप्त कर देंगे! या तो नोडलिस्ट के अंत से पीछे की ओर घुमाएं, या नोडलिस्ट को एक सादे ऐरे (जो अपडेट नहीं होगा) पर कॉपी करें और फिर उसके साथ काम करें।
Mozilla MDC site पर नोडलिस्ट के बारे में और पढ़ें।
स्रोत
2012-06-30 05:18:57