this
का मान इस बात पर निर्भर करता है कि आप फ़ंक्शन को कैसे कॉल करते हैं।
जब आप document.getElementById
पर कॉल करते हैं तो getElementById
this === document
हो जाता है। जब आप getElementById
को एक अलग चर पर कॉपी करते हैं और फिर इसे $
के रूप में कॉल करें तो this === window
(क्योंकि window
डिफ़ॉल्ट चर है)।
इसके बाद यह दस्तावेज़ ऑब्जेक्ट की बजाय विंडो ऑब्जेक्ट में आईडी को देखने का कारण बनता है, और यह बहुत ही विफल रहता है क्योंकि विंडोज दस्तावेज़ नहीं हैं और समान तरीके नहीं हैं।
आपको कॉल में document
को बनाए रखने की आवश्यकता है। आप इसके लिए एक रैपर फ़ंक्शंस का उपयोग कर सकते हैं उदा।
function $ (id) { return document.getElementById(id); }
... लेकिन कृपया $
का उपयोग न करें। यह एक भयानक नाम है। इसका कोई मतलब नहीं है और यह उन लोगों को भ्रमित करेगा जो इसे देखते हैं और सोचते हैं "आह! मुझे jQuery पता है!" या "आह! मुझे प्रोटोटाइप पता है" या आदि आदि
इस पोस्ट/उत्तर में लाइनों के बीच अपने जवाब खोज सकते हैं: http://stackoverflow.com/a/9612657/77047 –
मुझे यकीन है कि नहीं कर रहा हूँ यह एक ई है xact डुप्लिकेट प्रति से, लेकिन यह उसी ग्राउंड को कवर करता है जैसे http://stackoverflow.com/questions/6398787/javascript-shorthand-for-getelementbyid – lonesomeday