2010-12-01 11 views
6

यह प्रश्न मूर्खतापूर्ण प्रतीत हो सकता है, लेकिन document.getElementById ("someId") बनाम तत्व का उपयोग कर तत्व (आईडी "someId" के साथ) के बीच क्या अंतर है। बस कुछ टाइपिंग?document.getElementById ("someId") बनाम। someId

जैसे:

document.getElementById("someId").style.top = "12px"; 

बनाम

someId.style.top = "12px"; 

यहाँ एक नमूना कोड http://jsfiddle.net/pRaTA/ (मैंने पाया कि यह फ़ायरफ़ॉक्स में काम नहीं करता)

+2

दूसरे फॉर्म के साथ समस्या नाम संघर्ष है। उदाहरण के लिए, अपने jsfiddle में "abc" को "दस्तावेज़" में बदलें और देखें कि प्रत्येक मामले में क्या होता है। – Alohci

+0

संभावित डुप्लिकेट देखें [यहां डीओएम पेड़ तत्व वैश्विक चर हैं?] (Http://stackoverflow.com/q/3434278/1048572) – Bergi

उत्तर

5

भिन्न rence यह है कि someId कुछ ब्राउज़रों में काम करता है, document.getElementById("someId") वास्तव में डब्ल्यू 3 सी मानक का अनुपालन करता है।

+0

हाँ, मैं सहमत हूं। मैंने फ़ायरफ़ॉक्स में इसका परीक्षण किया और यह काम नहीं किया। हालांकि क्रोम/आईई में अच्छी तरह से काम करता है। http://jsfiddle.net/pRaTA/ – kwa

0

ग्राहक साइड स्क्रिप्टिंग में, हम दस्तावेज़ करते हैं वेब पेज में तत्व obj प्राप्त करने के लिए .getElementById। डीओएम और उसके गुणों से विशेष तत्व पुनर्प्राप्त करने के लिए & विधियों, आपको getElementById विधि का उपयोग करने की आवश्यकता है। Jquery में आप बस var objX = $ ('# id')

जहां आईडी लिखना सीधे काम नहीं करेगा। क्योंकि दस्तावेज़ को घुमाने के बिना आप डोम से तत्व obj कैसे निकालेंगे। document.getElementById विधि दस्तावेज़ से तत्व जानकारी खींच जाएगी। मुझे उम्मीद है कि यह कुछ समझ में आता है।

+0

मैंने यह पूछा क्योंकि दूसरी विधि वास्तव में काम करती है। – kwa

2

तत्व डीओएम आईडी घोषित करने का मतलब यह नहीं है कि यह सभी ब्राउज़रों में वैश्विक चर के रूप में उपलब्ध है। इसे प्राप्त करने का एकमात्र क्रॉस संगत तरीका सबसे पहले करना है।

var someId = document.getElementById("someId"); 

संपादित करें: मैं इस परीक्षण कोड है जो पुष्टि करता है कि वेबकिट आधारित ब्राउज़र पहले यह घोषित करने के बिना आईडी एक वर के रूप में उपलब्ध बनाने के लिए लग रहे हैं बनाया है। this के अनुसार, आईई भी इस व्यवहार को दिखाएगा।

  • फ़ायरफ़ॉक्स: वस्तु/अपरिभाषित
  • सफारी: वस्तु/वस्तु
  • क्रोम: वस्तु/वस्तु
  • आईई: वस्तु/वस्तु (असत्यापित)

कोड:

<html 
    <head> 
    </head> 
<body> 
    <div id="foo"></div> 
    <script type="text/javascript"> 

    alert("getElementById: "+typeof document.getElementById("foo")); 
    alert("as a var: "+typeof foo); 

    </script> 
</body> 
+0

हां, यह फ़ायरफ़ॉक्स में काम नहीं करता है। बीटीडब्ल्यू, यह आईई में भी काम करता है! http://jsfiddle.net/pRaTA/ – kwa

+2

रोमांचक। मुझे कभी नहीं पता था कि वेबकिट ब्राउज़र ने ऐसा किया था। यहां एक संभावित डुप्लिकेट है http://stackoverflow.com/questions/3434278/ie-chrome-are-dom-tree-elements-global-variables-here –

+0

उस लिंक के लिए धन्यवाद! मजेदार, मैंने वास्तव में सोचा कि मैं इस सवाल पूछने के लिए हँसेगा! :) – kwa

0

केवल someId का उपयोग करना तत्व का चयन करने का एक पुराना तरीका है (मुझे लगता है कि यह आईई द्वारा लागू किया गया था)। document.getElementById मानक है जो सभी ब्राउज़रों पर काम करता है।

परिदृश्य को ध्यान में रखते हुए कि आप केवल पुराने आईई ब्राउज़र का समर्थन करते हैं। document.getElementById अभी भी अधिक विश्वसनीय और पठनीय है। विश्वसनीय यदि आप आईडी के लिए सभी नंबरों का उपयोग कर रहे हैं।

उदाहरण के लिए

:

input element id="123" 

document.getElementById('123').value; // this one works 
123.value; // this one doesn't 
+0

इसके अलावा, यह फ़ायरफ़ॉक्स में काम नहीं करता है! – kwa

+0

दूसरे पैराग्राफ की पहली वाक्य पढ़ें, "परिदृश्य को ध्यान में रखते हुए कि आप केवल पुराने आईई ब्राउज़र का समर्थन करते हैं।" स्पष्टीकरण के लिए – sheeks06

0

वैश्विक तत्व (अपने दूसरे उदाहरण) की आईडी के नाम पर ऑब्जेक्ट के गुणों के रूप में तत्वों को एक्सेस करना एक सुविधा की कि IE में जन्म लिया और सफारी और क्रोम से कॉपी किया गया है है। यह वास्तव में एक बुरा विचार है और आपको इसका उपयोग नहीं करना चाहिए। मुख्य मुद्दा टकराव नामकरण कर रहा है (उदाहरण के लिए, "अलर्ट" या "दस्तावेज़" जैसे पूर्ण मान्य आईडी वाले तत्व)।

document.getElementById(), दूसरी ओर, लंबे समय से स्थापित डीओएम मानक है और some idiotic IE flaws के अलावा, मूर्खतापूर्ण है। इसे अन्य रूप में वरीयता में हमेशा इस्तेमाल करें।

+0

धन्यवाद! :) – kwa

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