2009-09-29 15 views
5

सबमिट किए जाने पर डीबग करने का प्रयास करते समय, मैंने यह लिखा।<फॉर्म एक्शन = "जावास्क्रिप्ट: अलर्ट (यह);"> यह "क्या है"?

<form action="javascript:alert(this);" 
  1. यह सचेत करने के लिए क्या कर रहा है सबमिट किया जाने वाला संभव है?
  2. यहां "यह" क्या दर्शाता है?

मुझे अलर्ट बॉक्स & में ऑब्जेक्ट मिला, इससे कुछ भी तय करने में असमर्थ। :-)

+1

आप कंसोल के साथ अधिक जानकारी प्राप्त कर सकते हैं।डीआईआर() या तो फायरबग (फ़ायरफ़ॉक्स एक्सटेंशन) या वेब इंस्पेक्टर (सफारी/क्रोम डेवलपर टूल्स) में। – eyelidlessness

+0

इसके अलावा, "अलर्ट (यह .innerHTML)" –

उत्तर

7

की एक नहीं बल्कि काम उपयोग अपने उदाहरण this में वैश्विक window वस्तु है। यह अपने आप का प्रयास करें: "function" (अर्थात वैश्विक समारोह) में

<form action="javascript:alert(typeof this.setTimeout);"> 

का परिणाम है। या फिर प्रयास करें: undefined में

<form action="javascript:alert(this.nodeType);"> 

परिणाम (यानी यह नहीं फ़ॉर्म तत्व की ओर इशारा करते है) *।

एक विशेषता अंदर "this" का मूल्य ही कभी दो चीजों में से एक हो जाएगा:

  1. वैश्विक window वस्तु
  2. तत्व में ही

केवल समय तत्व को this अंक स्वयं तब होता है जब इसे intrinsic event attribute ("on" के साथ उपसर्ग किया गया है, उदाहरण के लिए "onclick", "onload", आदि)। ये विशेषताएं विशेष हैं: ब्राउजर री-स्कोप्स this उस तत्व के लिए जिस पर ईवेंट फ़ायरिंग हो रहा है, और event ऑब्जेक्ट (उस नाम के साथ) विशेषता के अंदर भी उपलब्ध कराता है।

तो विशेषता नहीं आंतरिक घटनाओं में से एक है, "this" वैश्विक window वस्तु हो जाएगा।


फुटनोट:

* जब तक कि बेशक आप एक वैश्विक वर के लिए हुआ "nodeType" नामित

0

this जब HTML तत्व की विशेषता में जावास्क्रिप्ट में उपयोग किया जाता है तो यह तत्व का संदर्भ है। इसलिए आपके फॉर्म के संदर्भ में फॉर्म DOM ऑब्जेक्ट है।

दूसरे शब्दों में, कीवर्ड :)

+2

नहीं करने का प्रयास करें, कीवर्ड 'यह' केवल आंतरिक ईवेंट विशेषताओं (जैसे '" onfoo "') के लिए तत्व को इंगित करता है। –

2
<form action="javascript:alert(this === window);"> 
<input type="submit" value="Submit"> 
</form> 

पॉप अप होता है "सही" जब आप "भेजें" पर क्लिक करें। यह खिड़की वस्तु है। एक संभावित रूप से प्रासंगिक संदर्भ: https://developer.mozilla.org/en/DOM/element.addEventListener - "हैंडलर के भीतर इसका मूल्य" के अंतर्गत अनुभाग देखें।

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