2012-05-18 19 views
30

नीचे दिए गए दो उपयोगों के बीच क्या अंतर है?चेक = "चेक" बनाम चेक = सही

document.getElementById('myRadio').checked = "checked"; 

और

document.getElementById('myRadio').checked = true; 

मेरे लिए, दोनों एक ही तरह से व्यवहार कर रहे हैं। लेकिन, मुझे यह जानकर उत्सुकता है कि ऐसा करने के लिए दो विधियां क्यों मौजूद हैं।

कौन सा आदर्श उपयोग होगा? मुझे आईई 7 और उच्च संस्करणों का समर्थन करने की आवश्यकता है।

उत्तर

40

document.getElementById('myRadio').checked एक बूलियन मान है। यह होना चाहिए true या false

document.getElementById('myRadio').checked = "checked"; एक बूलियन है, जो सच है के लिए स्ट्रिंग डाले।

document.getElementById('myRadio').checked = true; केवल कास्टिंग किए बिना true असाइन करता है।

true का उपयोग करें क्योंकि यह मामूली रूप से अधिक कुशल है और रखरखाव करने वालों के लिए अधिक इरादा है।

7

मूल checked विशेषता (एचटीएमएल 4 और पहले) उस पर एक मूल्य की आवश्यकता नहीं था - अगर यह अस्तित्व, तत्व था, "जाँच", अगर नहीं, यह नहीं था। इसलिए दोनों तरीकों से आप अंत ही बात कर तैनात -

लेकिन यह है कि HTML 4.

पीछा मानक सच के लिए एक शर्त के रूप checked="checked" उपयोग करने के लिए प्रस्तावित XHTML के लिए मान्य नहीं है।

यह वास्तव में कोई फर्क नहीं पड़ता कि आप किस का उपयोग करते हैं - उस व्यक्ति का उपयोग करें जो आपको सबसे ज्यादा समझ में आता है और इसके साथ चिपक जाता है (या आपकी टीम के साथ किस तरह से सहमत है)।

+5

सं HTML 4 में और इससे पहले यह * * एक मूल्य की आवश्यकता थी ... यह नाम है कि वैकल्पिक था। यानी 'चेक = "चेक किया गया" 'पूर्ण संस्करण है, लेकिन आप' चेक =" 'और' "बंद कर सकते हैं और केवल मूल्य को पीछे छोड़ सकते हैं। (SGML प्राप्त कर सकते हैं * अजीब *!) – Quentin

+3

जिसके अनुसार, प्रश्न डोम संपत्ति, नहीं एचटीएमएल नियमों के बारे में पूछ रहा है। – Quentin

+0

@ क्वांटिन - पर्याप्त मेला, हालांकि यह अर्थशास्त्र के बारे में लगभग एक तर्क है। – Oded

2

checked विशेषता एक बूलियन मान तो बूलियन false को छोड़कर अन्य "string" की "checked" मूल्य true को परिवर्तित करता है।

कोई भी स्ट्रिंग मान सत्य होगा। इसके अलावा विशेषता की उपस्थिति यह सच बनाने:

<input type="checkbox" checked> 

आप कर सकते हैं यह केवल जे एस का उपयोग कर डोम में बूलियन परिवर्तन करने uncheked।

तो जवाब है: वे बराबर हैं।

w3c

+2

आप HTML विशेषता के साथ जावास्क्रिप्ट डोम संपत्ति भ्रमित कर रहे हैं (और अच्छा उपाय ब्राउज़र त्रुटि वसूली में अव्यवस्था)। – Quentin

6

document.getElementById('myRadio') आपको डीओएम तत्व देता है, मैं इसे इस उत्तर में elem के रूप में संदर्भित करूंगा।

elem.checkedसंपत्ति को DOM तत्व के checked नामित करता है। यह संपत्ति हमेशा एक बुलियन है।

HTML लिखते समय आप एक्सएचटीएमएल में checked="checked" का उपयोग करते हैं; एचटीएमएल में आप बस checked का उपयोग कर सकते हैं। विशेषता सेट करते समय (यह .setAttribute('checked', 'checked') के माध्यम से किया जाता है) आपको एक मूल्य प्रदान करने की आवश्यकता होती है क्योंकि कुछ ब्राउज़र एक खाली मान को अस्तित्व में नहीं मानते हैं।इसके लिए बूलियन संपत्ति - और अधिक आरामदायक -

हालांकि, चूंकि आपने डोम तत्व है आप के बाद से आप बस का उपयोग कर सकते विशेषता निर्धारित करने का कोई कारण नहीं है। चूंकि गैर-रिक्त तारों को true को बूलियन संदर्भ में माना जाता है, elem.checked से 'checked' या किसी और चीज जो झूठी मान नहीं है (यहां तक ​​कि 'false' या '0') चेकबॉक्स को चेक करेगा। true और false उपयोग करने के लिए नहीं है, हालांकि, ताकि आप उचित मूल्यों के साथ छड़ी चाहिए कारण नहीं है।

5

तत्व दोनों एक विशेषता और checked नाम के एक संपत्ति है। संपत्ति वर्तमान स्थिति निर्धारित करता है।

विशेषता कोई स्ट्रिंग है, और संपत्ति एक बूलियन है। जब तत्व HTML कोड से बनाया गया है, तो विशेषता मार्कअप से सेट की जाती है, और गुण विशेषता के मान के आधार पर सेट किया जाता है।

अगर वहाँ मार्कअप में विशेषता के लिए कोई मूल्य नहीं है, विशेषता null हो जाता है, लेकिन संपत्ति हमेशा या तो true या false है, इसलिए यह false हो जाता है।

जब आप गुण सेट है, तो आप एक बूलियन मान का उपयोग करना चाहिए:

document.getElementById('myRadio').setAttribute('checked', 'checked'); 

ध्यान दें कि विशेषता सेटिंग भी बदल जाता है:

document.getElementById('myRadio').checked = true; 

आप विशेषता निर्धारित हैं, तो आप एक स्ट्रिंग का उपयोग संपत्ति, लेकिन संपत्ति की स्थापना विशेषता को बदल नहीं है।

भी ध्यान रखें कि आप जो भी मान के लिए विशेषता सेट, संपत्ति true हो जाता है। यहां तक ​​कि अगर आप एक खाली स्ट्रिंग या null उपयोग करते हैं, विशेषता सेटिंग मतलब है कि यह जाँच की है। विशेषता का उपयोग तत्व अनचेक करने के लिए प्रयोग करें removeAttribute:

document.getElementById('myRadio').removeAttribute('checked'); 
+0

संपत्ति और विशेषता के बीच अच्छी व्याख्या। धन्यवाद! – Mac

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