2011-10-06 18 views
7

जावास्क्रिप्ट में, हम निम्नलिखित तरीके में एक नया डोम तत्व बना सकते हैं ...createAttribute बनाम बनाकर बस विशेषता को सीधे सेट करें?

createAttribute() + setAttributeNode() डोम तरीकों का उपयोग कर द्वारा:

var input = document.createElement("input"), 
    type = document.createAttribute("type"); 

type.nodeValue = "text"; 
input.setAttributeNode(type); 
container.appendChild(input); 

या सिर्फ गुण सीधे सेट करके :

var input = document.createElement("input"); 

input.type = "text"; 
container.appendChild(input); 

उत्तरार्द्ध बहुत कम कोड होने पर समाप्त हो सकता है, भले ही प्रति तत्व केवल कुछ विशेष गुण हों।

सवाल: किसी को भी बाद विधि के किसी भी कमियां (विशेषताओं सीधे स्थापित करने) के पार चला गया है?

मैंने कई ब्राउज़रों (नवीनतम एफएफ, आईई, सफारी, ओपेरा, पुराने आईईएस - यहां तक ​​कि आईई 6 काम किया) पर इसका परीक्षण किया और मूल परीक्षण (टाइप, नाम और अधिकतम लम्बाई विशेषताओं के साथ एक टेक्स्ट इनपुट डालने) पर वे सभी पास हुए । Here's the fiddle अगर किसी को इसकी जरूरत है।

उत्तर

9
document.createAttribute 
document.createAttributeNS 
element.getAttributeNode 
element.getAttributeNodeNS 
... and a lot of others 

DOM4 में हटा दिया जाएगा, तो यह प्रयोग नहीं करते, बस setAttribute साथ ("नाम", "मान") सेट

http://www.w3.org/TR/dom/#element

someinput.type अलग मूल रूप से है

setAttribute("type","text"); 
getAttribute("text"); 

करने के लिए एक शॉर्टकट उम्मीद है कि इससे मदद मिलती है!

element._some_attribute_ is not available for all attributes, just some: 
element.dir 
element.lang 
element.id 
...etc 
+2

यह पूरी तरह से सच नहीं है कि 'setAttribute() 'और' getAttribute() 'का उपयोग करके संबंधित संपत्ति का उपयोग करने के बराबर हमेशा होता है। उदाहरण के लिए, 'मान' गुण (जो हमेशा इनपुट के वर्तमान मूल्य को प्रतिबिंबित करता है)' मान' विशेषता से अलग होता है (जो केवल प्रारंभिक मान का प्रतिनिधित्व करता है)। एक और स्पष्ट उदाहरण 'स्टाइल' विशेषता है, जिसमें 'स्टाइल' प्रॉपर्टी बनाम एक स्ट्रिंग है, जो प्रत्येक व्यक्तिगत स्टाइल प्रॉपर्टी के लिए अलग-अलग गुणों वाला 'सीएसएस स्टाइल डिक्लेरेशन' ऑब्जेक्ट है। –

+0

मैंने कहां कहा कि वे हमेशा समकक्ष हैं? : पी –

+0

उचित बिंदु, आपने नहीं किया। निश्चित नहीं है कि अब मेरी टिप्पणी किसने संकेत दी। –

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