getAttributeDOM तत्व की विशेषता को पुनः प्राप्त करता है , जबकि इस DOM तत्व el.idकी संपत्ति को पुनः प्राप्त करता है । वे एक जैसे नहीं हैं।
अधिकांश समय, DOM गुण विशेषताओं के साथ सिंक्रनाइज़ किए जाते हैं।
हालाँकि, सिंक्रनाइज़ेशन समान मान की गारंटी नहीं देता है । एक उत्कृष्ट उदाहरण के बीच है el.hrefऔर el.getAttribute('href')एक एंकर तत्व के लिए।
उदाहरण के लिए:
<a href="/" id="hey"></a>
<script>
var a = document.getElementById('hey')
a.getAttribute('href') // "/"
a.href // Full URL except for IE that keeps '/'
</script>
यह व्यवहार इसलिए होता है क्योंकि W3C के अनुसार , href प्रॉपर्टी एक अच्छी तरह से बनाई गई कड़ी होनी चाहिए। अधिकांश ब्राउज़र इस मानक का सम्मान करते हैं (अनुमान है कि कौन नहीं?)।
वहाँ के लिए एक और मामला है inputकी checkedसंपत्ति। DOM प्रॉपर्टी रिटर्न trueया falseजबकि विशेषता स्ट्रिंग "checked"या एक खाली स्ट्रिंग लौटाता है ।
और फिर, कुछ गुण हैं जो केवल एक ही तरीके से सिंक्रनाइज़ हैं । सबसे अच्छा उदाहरण valueएक inputतत्व की संपत्ति है । DOM प्रॉपर्टी के माध्यम से इसके मूल्य को बदलने से विशेषता नहीं बदलेगी (संपादित करें: अधिक सटीकता के लिए पहली टिप्पणी की जाँच करें)।
इन कारणों के कारण, मेरा सुझाव है कि आप DOM गुणों का उपयोग करते रहें , न कि विशेषताओं का, क्योंकि उनका व्यवहार ब्राउज़रों के बीच भिन्न होता है।
वास्तव में, केवल दो मामले हैं जहां आपको विशेषताओं का उपयोग करने की आवश्यकता है:
- एक कस्टम HTML विशेषता, क्योंकि यह DOM प्रॉपर्टी के लिए सिंक नहीं की जाती है।
- एक अंतर्निहित HTML विशेषता तक पहुंचने के लिए, जो संपत्ति से समन्वयित नहीं है, और आपको यकीन है कि आपको विशेषता की आवश्यकता है (उदाहरण के लिए,
valueएक inputतत्व का मूल )।
यदि आप अधिक विस्तृत स्पष्टीकरण चाहते हैं, तो मैं दृढ़ता से सुझाव देता हूं कि आप इस पृष्ठ को पढ़ें । यह आपको केवल कुछ मिनट लगेगा, लेकिन आपको जानकारी (जो मैंने यहां बताई है) से प्रसन्नता होगी।