在尝试调试正在提交的内容时,我写了这个。
<form action="javascript:alert(this);"
我在警报框中得到了对象&amp;无法决定任何事情。 : - )
答案 0 :(得分:7)
在您的示例中,this
是全局window
对象。亲自尝试一下:
<form action="javascript:alert(typeof this.setTimeout);">
导致"function"
(即全局函数)。或者尝试:
<form action="javascript:alert(this.nodeType);">
导致undefined
(即 指向表单元素)*。
属性中"this"
的值只能是以下两种情况之一:
window
对象 this
指向元素本身的唯一时间是在intrinsic event attribute内使用"on"
的前缀(例如"onclick"
,"onload"
,{{ 1}}等。这些属性很特殊:浏览器将this
重新范围扩展到事件触发的元素,并在属性中创建event
对象(具有该名称)。
如果属性不其中一个内部事件,"this"
将成为全局window
对象。
脚注:
*除非你碰巧有一个名为"nodeType"
答案 1 :(得分:2)
<form action="javascript:alert(this === window);">
<input type="submit" value="Submit">
</form>
单击“提交”时,弹出“true”。这是窗口对象。一个可能相关的参考:https://developer.mozilla.org/en/DOM/element.addEventListener - 请参阅“处理程序中的此值”下的部分。
答案 2 :(得分:0)
this
在JavaScript中使用时,HTML元素的属性是元素本身的引用。因此,表单上下文中的this
是表单 DOM对象。
换句话说,相当方便地使用关键字:)