2015-02-05 6 views
5

मेरे पास है:जावास्क्रिप्ट document.getElementById ("आईडी") और तत्व आईडी गुण

myDiv1.innerHTML = "myDiv1, Hi!" 

या

document.getElementById("myDiv2").innerHTML = "myDiv2, Hi!" 
:

<div id="myDiv1"></div> 
<div id="myDiv2"></div> 

जावास्क्रिप्ट में, मैं div innerHTML लेखन से सेट कर सकते हैं

मुझे दस्तावेज़.getElementById का उपयोग क्यों करना चाहिए जब मैं केवल तत्व आईडी का उपयोग कर सकता हूं? क्या यह हर समय या केवल कुछ विशेष परिदृश्यों (जैसे साधारण नमूना) में काम कर रहा है?

धन्यवाद,

माइक

+0

अपने पहले स्निपेट में, आप 'myDiv1' का उपयोग कर रहे हैं। आपने इसे कैसे प्राप्त किया है? – Giorgio

+1

नहीं, आप नहीं कर सकते। बस आप आईडी द्वारा प्रत्येक एक div को var को असाइन कर सकते हैं, लेकिन इस असाइनमेंट के बिना कुछ भी नहीं। – panther

+0

यह काम करता है, लेकिन [यह एक बुरा विचार है] (http://stackoverflow.com/q/25325221/417562)। – lonesomeday

उत्तर

7

मैं document.getElementById का उपयोग क्यों जब मैं बस तत्व आईडी का उपयोग कर सकते चाहिए?

संघर्ष से बचने के लिए। ब्राउज़रों पर वैश्विक नामस्थान अविश्वसनीय रूप से भीड़ है, इसमें सभी प्रकार की चीजें शामिल हैं (जैसा कि आपने पाया है) ग्लोबल्स id (तथाकथित "स्वचालित ग्लोबल्स") के साथ किसी भी तत्व का जिक्र करते हैं।

इसके विपरीत, getElementById केवल यही कहता है, id द्वारा तत्व ढूंढता है; यह अधिक बाध्य है। (आईई, जो भी name विशेषताओं के साथ तत्वों को देखा के पुराने संस्करणों में कीड़े के अलावा।)

1

जब आप लिखते हैं

myDiv1.innerHTML = "myDiv1, Hi!" 

आप विंडो ऑब्जेक्ट बुला रहे हैं, इसलिए वास्तविक कॉल इस

window.myDiv1.innerHTML = "myDiv1, Hi!" 
की तरह है

यह व्यवहार अब बहिष्कृत है और इससे बचा जा सकता है। इसके बजाय हमें

document.getElementById` 
+0

* "यह व्यवहार अब बहिष्कृत है ..." * जहां तक ​​मुझे पता है। विंडो ऑब्जेक्ट को दस्तावेज करने के डब्ल्यू 3 सी प्रयास ने इसका जिक्र नहीं किया, लेकिन यह आठ साल तक भी मर चुका है और कभी भी एक बहुत ही मसौदा ड्राफ्ट चरण नहीं मिला है। "एचटीएमएल" spec का WHAT-WG का संस्करण (जो एचटीएमएल से ** ** बहुत अधिक ** है) [विंडो के इस पहलू को दस्तावेज करता है] (https://html.spec.whatwg.org/#named-access- ऑन-द-विंडो-ऑब्जेक्ट) इसे "बहिष्कृत" कहने के बिना। मैं सहमत हूं कि इसका उपयोग करने से बचें। –

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