2012-07-26 24 views
10

GWT अपने अद्वितीय ID द्वारा HTML तत्व को पुनर्प्राप्त करने के दो तरीके प्रदान करता है।डीओएम और दस्तावेज़ कक्षाओं से getElementById विधियों के बीच अंतर

क्या diference के बीच (यदि वहाँ एक है):

  • DOM.getElementById ("divid"):

के भीतर दी अद्वितीय आईडी से संबद्ध तत्व हो जाता है संपूर्ण दस्तावेज़।

@param आईडी आईडी जिसका जुड़े तत्व अगर कोई

  • Document.get()। GetElementById पाया जाता है ("divid" जुड़े तत्व @return
    पुनः प्राप्त किया जा करने के लिए, या रिक्त है):

तत्व जिसका आईडी elementId द्वारा दिया जाता है देता है। यदि कोई ऐसा तत्व मौजूद नहीं है, तो शून्य वापस आता है। व्यवहार को परिभाषित नहीं किया गया है यदि एक से अधिक तत्व में यह आईडी है।

@param एक तत्व
मिलान तत्व

उत्तर

15

मूल रूप से कुछ भी नहीं @return के लिए विशिष्ट आईडी मूल्य elementId। जीडब्ल्यूटी के जीवन चक्र के दौरान किसी बिंदु पर पूरे डीओएम संबंधित कोड को dom पैकेज में फिर से लिखा गया था। प्रत्येक टैग टैग के लिए नए पैकेज में एक विशिष्ट एलिमेंट क्लास उपलब्ध है, जैसे DivElement इन टैग के लिए विशिष्ट विधियां प्रदान करने के लिए। उदाहरण के लिए उदाहरण में यदि आप इसका उपयोग div तत्वों को देखने के लिए करेंगे, तो आप सीधे DivElement का उपयोग कर सकते हैं। कोड दोनों संस्करणों के लिए होगा के रूप में देखने के लिए इस प्रकार है:

DivElement divID = (DivElement) Document.get().getElementById("divID"); 

या

DivElement divID = (DivElement) DOM.getElementById("divID").cast(); 

पिछड़े संगत पुराने कोड रखा गया था होना करने के लिए। सभी विजेट कक्षाएं पुराने Element कक्षा का उपयोग करती हैं जो DOM.getElementById द्वारा भी लौटा दी जाती है। पुरानी Element कक्षा बदल दी गई थी और बिना किसी अतिरिक्त के नए Element कक्षा को बढ़ाया गया था। तो वे मूल रूप से वही हैं। आम तौर पर आपको केवल Document.get() का उपयोग करना चाहिए। तत्वों के साथ काम करते समय यह सब कुछ भ्रमित कर सकता है।

+0

वास्तव में यह बहुत भ्रमित है। विशेष रूप से क्योंकि नया 'तत्व' पुराना है। बहुत अच्छी व्याख्या। संक्षिप्त और सरल –

7

देखो:

com.google.gwt.user.client.DOM

public static Element getElementById(String id) { 
    return Document.get().getElementById(id).cast(); 
} 

में com.google.gwt.dom.client.Document में

public final native Element getElementById(String elementId) /*-{ 
    return this.getElementById(elementId); 
}-*/; 

तो यह सिर्फ एक "सुविधा आवरण विधि" है।

लेकिन हालांकि वे दोनों Element विभिन्न संकुल से इन आरा लौट Element है, और आप उन दोनों के बीच डाल सकता या तो जावा डाली वाक्य रचना () साथ या सुविधा विधि के साथ वंशानुगत पदानुक्रम अनदेखी के रूप में दोनों Element रों JavaScriptObject कर रहे हैं और मतलब एक ही JavaScriptObject.<T extends JavaScriptObject> cast()

बीटीडब्ल्यू। दस्तावेज़ जेएसओ ओवरले प्रकार है इसलिए "मूल this" this पर अंक;)

+1

इसके लिए धन्यवाद। अब यह और भी स्पष्ट है;) –