2009-09-29 97 views
5

当试图调试正在提交的内容时,我写了这个。<form action =“javascript:alert(this);”>什么是“this”?

<form action="javascript:alert(this);" 
  1. 是否有可能警报 提交什么?
  2. 这里“this”表示什么?

我得到了警报框中的对象&无法做出任何决定。 :-)

+1

您可以通过控制台获取更多信息。dir()在Firebug(Firefox扩展)或Web Inspector(Safari/Chrome开发人员工具)中。 – eyelidlessness 2009-09-29 05:38:05

+0

此外,请尝试执行“alert(this.innerHTML)” – 2009-09-29 05:41:23

回答

7

的在您的例子this是全球window对象。自己尝试一下:

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

结果"function"(即全局函数)。或者试试:

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

结果undefined(即它指着表单元素)*。

"this"属性内的值将永远只能是一两件事情:

  1. 全球window对象
  2. 元素本身

唯一一次this指向元素本身就是当它在intrinsic event attribute(以"on"为前缀,例如"onclick""onload"等)。这些属性是特殊的:浏览器将this重新定位到事件触发的元素上,并创建在属性内也可用的event对象(使用该名称)。

如果属性固有的事件之一,"this"将是全球window对象。


脚注:

*当然,除非你碰巧有一个全局变量命名"nodeType"

0

this当在JavaScript中使用HTML元素的属性时,它是元素本身的引用。因此this在您的表单的上下文中是表格 DOM对象。

换句话说,相当方便使用的关键字:)

+2

不可以,关键字'this'只指向内部事件属性的元素(例如''onfoo“')。 – 2009-09-29 10:22:23

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

弹出 “真”,当你点击 “提交”。这是窗口对象。一个可能相关的参考文献:https://developer.mozilla.org/en/DOM/element.addEventListener - 请参阅“处理程序中的这个值”一节。

相关问题