2011-12-21 9 views
8

मैं Element.setAttribute(String name, String value) और Element.setPropertyString(String name, String value) के बीच अंतर निर्धारित नहीं कर सकता। क्या कोई अंतर है? पाठ इनपुट पर प्लेसहोल्डर सेट करने का प्रयास करते समय कौन सा प्राथमिकता दी जाती है? मैं getElement().setPropertyString("placeholder", "this is a placeholder"); कर रहा हूं और यह काम करता है, लेकिन क्या यह करने का उचित तरीका है?जीडब्ल्यूटी एलिमेंट सेटएट्रिब्यूट बनाम सेटप्रॉपर्टीस्टिंग

documentation for DOM में, setAttribute(Element, String, String) हटाई गई है, उपयोग करने के लिए कह रही है "अधिक उचित setElementProperty(Element, String, String) बजाय नाम दिया है।" क्या इसका मतलब है कि किसी को Element के समान नामित तरीकों का उपयोग करना चाहिए?

उत्तर

6

समस्या यह है कि आईई 6 और आई 7 (और आईई 8 संगतता मोड में) में, setAttribute वास्तव में संपत्ति सेट करता है (आईई वास्तव में कोई फर्क नहीं पड़ता; IE8 ने DOM spec में परिभाषित विशेषता को पुनर्प्राप्त करने के लिए getAttribute पर एक वैकल्पिक तर्क जोड़ा; http://msdn.microsoft.com/en-us/library/ms536429v=vs.85.aspx देखें)।

Btw, अपने JavaDoc संदर्भ http://google-web-toolkit.googlecode.com/svn/javadoc/latest/index.html (GWT 1.5 के लिए एक नहीं है, जो गंभीर रूप से बीत चुका है) होना चाहिए, और आप com.google.gwt.dom.client.Element बजाय com.google.gwt.user.client.DOM उपयोग करना चाहिए। Element में setAttribute है जो IE6/7 (या IE8 के समान मोड) के अलावा प्रत्येक ब्राउज़र में विशेषता सेट करता है।

लेकिन अधिकांश समय, आपको केवल गुणों के बजाय डीओएम गुणों के साथ काम करना चाहिए। उदाहरण के लिए, आप tab index को एक संख्या के रूप में प्राप्त करना चाहते हैं, स्ट्रिंग के रूप में नहीं। और अगर आप डिफ़ॉल्ट मान/विशेषता का अभाव, नहीं एक null आप जब कोई type विशेषता खुद type=text को जैसे एक input तत्व चूक को संभालने के लिए (होगा कि में एक संपत्ति के लिए राज्य चाहते हैं, getAttribute("type")null जबकि getPropertyString("type") वापसी होगी होगा वापसी "text")।

+0

के लिए बेहतर फिट करने के लिए उत्तर अपडेट किया है।4, 'getAttribute'' रिटर्न: स्ट्रिंग के रूप में Attr मान, या खाली स्ट्रिंग यदि उस विशेषता में निर्दिष्ट या डिफ़ॉल्ट मान नहीं है ", शून्य नहीं है, लेकिन यह शेष उत्तर को प्रभावित नहीं करता है। +1 –

+0

इसके अलावा, यह गुणों/विशेषताओं को हटाने को कैसे प्रभावित करता है? उदाहरण के लिए, 'removeAttribute() 'है, लेकिन कोई' निकालेंप्रॉपर्टी()' नहीं है। मान लें कि मेरे पास '<इनपुट प्रकार =" संख्या "चरण =" 3 "अधिकतम =" 6 ">' है और 'अधिकतम' प्रतिबंध को हटाना चाहता था। यह कैसे प्राप्त किया जाएगा? –

+0

इसे किसी भी मान पर सेट करें जो बाधा को हटा देगा, उदाहरण के लिए खाली स्ट्रिंग (आप 'null' भी कोशिश कर सकते हैं)। Http://dev.w3.org/html5/spec/common-input-element-attributes.html#the-min-and-max-attributes और http://dev.w3.org/html5/spec/states देखें -of-प्रकार-attribute.html # संख्या राज्य प्रकार संख्या –

6

गुण और गुणों के बीच एक अंतर है। संक्षेप में विशेषता प्रारंभिक स्थिति का प्रतिनिधित्व करती है जबकि संपत्ति हमेशा वर्तमान स्थिति का प्रतिनिधित्व करती है।

विवरण स्पष्टीकरण के लिए http://jquery-howto.blogspot.com/2011/06/html-difference-between-attribute-and.html देखें।

जीडब्ल्यूटी कॉलिंग सेट में एट्रिब्यूट मूल तत्व जावास्क्रिप्ट फ़ंक्शन सेट को वर्तमान तत्व पर एट्रिब्यूट करता है। कॉलिंग सेटप्रॉपर्टी ... वर्तमान तत्व पर संपत्ति सेट करें।

अतीत में यह अधिकांश ब्राउज़रों में यह समान होता था, लेकिन विकसित मानकों के साथ यह पहले बदलना शुरू कर दिया था।

मैं सच में डॉन `t ब्राउज़र कार्यान्वयन के बीच सभी छोटे मतभेदों को पता है, लेकिन अंतर एक अलग डोम स्तर चश्मा पर भरोसा कर सकता है पर नज़र रखने के: http://www.w3.org/TR/DOM-Level-2-HTML/http://www.w3.org/TR/DOM-Level-3-Core/

इसके अलावा मोज़िला डॉक्स setAttribute पर कर रहे हैं काफी सकता है और राज्य फ़ायरफ़ॉक्स के लिए अंतर: https://developer.mozilla.org/en/DOM/element.setAttribute

सारांश में

तो: यदि आप GWT में setAttribute उपयोग करते हैं ताकि सामान्य रूप से, ब्राउज़र setAttribute कार्यान्वयन जो कुछ हद तक डिफ़ॉल्ट रूप मूल्य स्थापित कर रही है (कुछ प्रॉपर्टी पर, और एक मूल्य अपडेट नहीं हो) पर भरोसा करते हैं आप सेटप्रॉपर्टी चाहते हैं ...

+0

अनुसंधान के लिए +1। जीडब्ल्यूटी आवेदन के संदर्भ में हालांकि, जहां डीओएम * बदलता है, क्या यह अभी भी लागू होता है? –

+0

मैंने जीडब्ल्यूटी 2 में जावाडोक के मुताबिक जीवीटी पृष्ठभूमि –

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