当试图调试正在提交的内容时,我写了这个。<form action =“javascript:alert(this);”>什么是“this”?
<form action="javascript:alert(this);"
- 是否有可能警报 提交什么?
- 这里“this”表示什么?
我得到了警报框中的对象&无法做出任何决定。 :-)
的在您的例子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"
等)。这些属性是特殊的:浏览器将this
重新定位到事件触发的元素上,并创建在属性内也可用的event
对象(使用该名称)。
如果属性不固有的事件之一,"this"
将是全球window
对象。
脚注:
*当然,除非你碰巧有一个全局变量命名"nodeType"
this
当在JavaScript中使用HTML元素的属性时,它是元素本身的引用。因此this
在您的表单的上下文中是表格 DOM对象。
换句话说,相当方便使用的关键字:)
不可以,关键字'this'只指向内部事件属性的元素(例如''onfoo“')。 – 2009-09-29 10:22:23
<form action="javascript:alert(this === window);">
<input type="submit" value="Submit">
</form>
弹出 “真”,当你点击 “提交”。这是窗口对象。一个可能相关的参考文献:https://developer.mozilla.org/en/DOM/element.addEventListener - 请参阅“处理程序中的这个值”一节。
您可以通过控制台获取更多信息。dir()在Firebug(Firefox扩展)或Web Inspector(Safari/Chrome开发人员工具)中。 – eyelidlessness 2009-09-29 05:38:05
此外,请尝试执行“alert(this.innerHTML)” – 2009-09-29 05:41:23