2010-03-16 24 views
5

डोम में, क्या यह तत्व के गुणों को संदर्भित करना ठीक है:डीओएम में उपयोग करना ठीक है। गुणों को प्राप्त करने/सेट करने के लिए नोटेशन?

var universe = document.getElementById('universe'); 
    universe.origin = 'big_bang'; 
    universe.creator = null; 
    universe.style.deterministic = true; 

? ऑब्जेक्ट्स और उनकी गोपनीयता के लिए मेरा गहरा सम्मान, और मेरी समझ है कि अगर मैं सावधान नहीं हूं, तो चीजें बहुत गलत हो सकती हैं, मुझे इस तरह सब कुछ करना है:

var universe = document.getElementById('universe'); 
    if(universe.hasAttribute('origin')) then universe.origin = 'big_bang'; 

etc... 

क्या यह वास्तव में उन एक्सेसर विधियों का उपयोग करना आवश्यक है ? निस्संदेह यह निश्चित रूप से आवश्यक हो सकता है कि मैं कितना निश्चित हूं कि जिन तत्वों में मैं छेड़छाड़ कर रहा हूं, उनके पास उन गुणों की विशेषता होगी जिनकी मैं अपेक्षा करता हूं, लेकिन आम तौर पर डोम लोग इसे उपयोग करने के लिए ठीक मानते हैं। गेटर्स और सेटर्स के बजाय नोटेशन?

धन्यवाद!

उत्तर

3

XML दस्तावेज़ों के लिए, आप getAttribute/setAttribute/removeAttribute आदि का उपयोग करना चाहिए जावास्क्रिप्ट प्रॉपर्टी का कोई भी मानचित्रण के लिए डोम गुण नहीं है।

HTML दस्तावेज़ के लिए, आप उपयोग कर सकते हैं getAttribute एट अल विशेषताओं का उपयोग करने की है, लेकिन यह सबसे अच्छा है क्योंकि IE6-7 इसके साथ कठिनाइयों है नहीं। डोम लेवल 2 एचटीएमएल गुण न केवल अधिक विश्वसनीय हैं, बल्कि पढ़ने के लिए भी आसान हैं।

यह स्पष्ट नहीं है कि आप यहां एक्सएमएल या एचटीएमएल दस्तावेज़ों का उपयोग कर रहे हैं या नहीं। स्पष्ट रूप से origin एक HTML विशेषता नहीं है; 'कस्टम' तत्व और इस तरह के गुण HTML दस्तावेज़ों में शामिल नहीं किए जाने चाहिए। लेकिन यह स्पष्ट नहीं है कि universe.style.deterministic क्या है; आपको एक HTML style विशेषता के बिना मैप किए गए सीएसएस स्टाइल लुकअप नहीं मिलेगा।

+0

getElementById की तलाश नहीं करता है। और 'ब्रह्मांड' निश्चित रूप से HTML टैग के लिए एक मान्य आईडी है। –

+0

अच्छा बिंदु, मैंने इसे देखकर उदाहरण चुना! :-) तय किया गया। – bobince

+1

यह उत्तर है। –

3

हाँ, यह अगर वहाँ डोम में एक विशेषता है ठीक ;-) है, तो आप सीधे सेट करें या उसे प्राप्त कर सकते हैं,। कोई निजी या केवल-पढ़ने वाले तत्व या कुछ भी नहीं। वैसे, जावास्क्रिप्ट में 'फिर' कीवर्ड नहीं है।

2

पार ब्राउज़र मुद्दों के कारण मैं हमेशा का उपयोग getAttribute और setAttribute:

if(!universe.getAttribute('origin')) 
{ 
    universe.setAttribute('origin', 'big_bang'); 
} 

मैं बारीकियों को याद नहीं है, लेकिन मैं संपत्ति शैली universe.origin और डायनामिक रूप से तैयार डोम तत्वों से संबंधित समस्याओं पड़ा है।

0

नहीं, यह नहीं ठीक ऐसा करने के लिए है। डीओएम वस्तुओं के अधिकांश गुणों को ओवरराइट किया जा सकता है। आप ब्राउज़र के व्यवहार को बर्बाद नहीं करेंगे, क्योंकि यह डीओएम एपीआई का उपयोग नहीं करता है। लेकिन यदि आप अधिलेखित संपत्ति का मूल अर्थ में उपयोग करने का प्रयास करते हैं तो आप अपनी जेएस स्क्रिप्ट को बर्बाद कर देंगे।

:

मेरे बातें, जब मैं एक वस्तु (के रूप में एक झंडा या लिंक के खिलाफ) को संलग्न करने के लिए कई गुण करने के अपने तरीके से, एक कस्टम वस्तु बनाने और उसके बाद डोम तत्व से लिंक करने का है

var Universe = { 
    origin: "big_bang", 
    creator: null, 
    style: { deterministic: true } 
}; 
document.getElementById('universe')._universe = Universe; 
संबंधित मुद्दे

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