Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> JavaScript

JavaScript में getElementsByClassName() से सही तरीके से कैसे इटरेट करें?

getElementsByClassName() एक लाइव HTMLCollection लौटाता है, ऐरे नहीं। इसे सही से इटरेट करने के लिए for लूप, Array.from(), या स्प्रेड ऑपरेटर उपयोग करें।

समस्या: लाइव कलेक्शन

const items = document.getElementsByClassName('demo');

// ❌ गलत: लूप के दौरान लंबाई बदलती है यदि DOM मॉडिफाई होता है
// ❌ forEach सीधे काम नहीं करता - HTMLCollection में नहीं है

विधि 1: पारंपरिक for लूप (सबसे तेज़, कोई कॉपी नहीं)

<div class="demo">पहला प्रोग्राम</div>
<div class="demo">दूसरा प्रोग्राम</div>
<div class="demo">तीसरा प्रोग्राम</div>

<script>
    const elements = document.getElementsByClassName('demo');
    
    for (let i = 0; i < elements.length; i++) {
        console.log(elements[i].innerHTML);
    }
</script>

विधि 2: Array.from() - ऐरे में बदलें (मॉडर्न)

const elements = document.getElementsByClassName('demo');
const arr = Array.from(elements);

arr.forEach(el => console.log(el.innerHTML));

// या एक लाइन में
Array.from(document.getElementsByClassName('demo')).forEach(el => 
    console.log(el.textContent)
);

विधि 3: स्प्रेड ऑपरेटर (ES6)

[...document.getElementsByClassName('demo')].forEach(el => 
    console.log(el.innerHTML)
);

विधि 4: querySelectorAll (स्टैटिक NodeList - अक्सर बेहतर)

// यह NodeList लौटाता है जिसमें forEach होता है!
const elements = document.querySelectorAll('.demo');
elements.forEach(el => console.log(el.innerHTML));

// फर्क: querySelectorAll स्टैटिक है (लाइव नहीं)

चलाने का तरीका

HTML फ़ाइल में ऊपर का कोड डालकर ब्राउज़र में खोलें, कंसोल देखें (F12)।

आउटपुट

पहला प्रोग्राम
दूसरा प्रोग्राम
तीसरा प्रोग्राम

तुलना: HTMLCollection vs NodeList

विशेषताgetElementsByClassNamequerySelectorAll
रिटर्न टाइपHTMLCollection (लाइव)NodeList (स्टैटिक)
forEach❌ नहीं✅ हां
स्प्रेड [...col]✅ काम करता है✅ काम करता है
Array.from()✅ काम करता है✅ काम करता है
DOM परिवर्तन पर अपडेट✅ हां (लाइव)❌ नहीं (स्टैटिक)
प्रदर्शनथोड़ा तेज़थोड़ा धीमा

सिफारिश

अधिकांश मामलों में querySelectorAll उपयोग करें - इसमें forEach बिल्ट-इन है और स्टैटिक होने से बग कम होते हैं।

  1. जावास्क्रिप्ट में एक ऑब्जेक्ट को दूसरे ऑब्जेक्ट के माध्यम से कैसे एक्सेस करें? जावास्क्रिप्ट में एक ऑब्जेक्ट को दूसरे ऑब्जेक्ट के माध्यम से कैसे एक्सेस करें?

    जावास्क्रिप्ट में एक ऑब्जेक्ट को दूसरे ऑब्जेक्ट के माध्यम से एक्सेस करने के लिए निम्नलिखित कोड है: उदाहरण <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1

  1. जावास्क्रिप्ट में बटन क्लिक पर डिव को छिपाना जावास्क्रिप्ट में बटन क्लिक पर डिव को छिपाना

    मान लीजिए निम्नलिखित हमारा डिव है - Welcome in JavaScript निम्नलिखित हमारा बटन है। क्लिक करने पर, उपरोक्त डिव छिप जाना चाहिए -Click The Buttonडिव को छिपाने के लिए जावास्क्रिप्ट में style.display अवधारणा का उपयोग करें। कोड निम्नलिखित है -उदाहरण  Document Click The Button Welcome in Jav

  1. JavaScript में div का स्क्रीनशॉट लेना JavaScript में div का स्क्रीनशॉट लेना

    हमें अपने मार्कअप के उन हिस्सों को कैप्चर करने (छवि में बदलने) की आवश्यकता है जो हमारी वेबसाइट को लेआउट करते हैं और उस कैप्चर की गई छवि को सहेजना या उसके साथ कुछ करना है। इसलिए, हमें इस वर्णित व्यवहार को प्राप्त करने का एक तरीका तैयार करना आवश्यक है। चूंकि हमारी समस्या में केवल कैनवास ही नहीं बल्कि