2017-07-03 3 views
6

तक पहुँचने मैं समझता हूँ कि कैसे ब्राउज़र हैलो बीच अंतर और नीचे दिए गए में window.hello कोडक्या window.element और तत्व के बीच अंतर है, जबकि डोम तत्वों

http://jsfiddle.net/PH3t2/291/

var hello = "new hello"; 
 
console.log("variable hello : " + hello); // <-- prints "new hello" 
 
console.log(window.hello); // <-- logs HTML elements
<div class="mainWrapper"> 
 
    <div class="mainBox" id="hello"> 
 
    main 
 
    </div> 
 
    <div class="clear" id="hello"></div> 
 
</div>

चाहते

निर्दिष्ट विंडो स्ट्रिंग "new hello" स्ट्रिंग के बजाय HTML तत्वों को कैसे मुद्रित करती है?

उत्तर

6

मुद्दा है क्योंकि डिफ़ॉल्ट रूप से ब्राउज़र window के गुण उनके id विशेषता के आधार पर keyed के रूप में सभी तत्वों को संग्रहीत करती है - इस कारण से आप एक ही id के साथ कई तत्व नहीं कर सकते हैं, जिसके कारण एचटीएमएल आपने का हिस्सा है दिखाया गया अवैध है।

यह भी है कि window.hello एक एलिमेंट ऑब्जेक्ट देता है - यह आपके HTML में पहले <div> का संदर्भ है।

इसी तरह, ब्राउज़र जानता है कि जब आप hello वैरिएबल को परिभाषित करते हैं तो आप संदर्भ से अलग मूल्य को window.hello तत्व से अलग करना चाहते हैं। यही कारण है कि hello"new hello" स्ट्रिंग देता है।

+2

यहां का मुख्य भाग यह है कि jsfiddle एक विंडो ऑनलोड ईवेंट के अंदर कोड को लपेटता है, इसलिए 'var hello' एक स्थानीय चर बन जाता है। यदि आप रैपर को हटाते हैं, तो 'window.hello' चर को संदर्भित करता है: http://jsfiddle.net/PH3t2/292/ – JJJ

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