2009-09-29 28 views
5

Al intentar depurar lo que se envía, escribí esto.<form action = "javascript: alert (this);"> ¿qué es "this"?

<form action="javascript:alert(this);" 
  1. ¿Es posible para alertar lo que se presenta ?
  2. Aquí "esto" indica qué?

Obtuve el objeto en el cuadro de alerta & incapaz de resolver nada. :-)

+1

Puede obtener más información con la consola.dir() en Firebug (extensión de Firefox) o Web Inspector (herramientas de desarrollador de Safari/Chrome). – eyelidlessness

+0

Además, intente hacer "alert (this.innerHTML)" –

Respuesta

7

En su ejemplo this es el window objeto global. Inténtelo usted mismo:

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

resultados en "function" (es decir, la función global). O probar:

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

resultados en undefined (es decir, no es señalando el elemento de formulario) *.

El valor de "this" dentro de un atributo siempre será solamente una de dos cosas:

  1. la window objeto global
  2. el propio elemento

La única vez this puntos al elemento en sí es cuando se usa dentro de un intrinsic event attribute (los que tienen el prefijo "on", por ej. "onclick", "onload", etc.). Estos atributos son especiales: el buscador vuelve a ver el this en el elemento en el que se activa el evento y crea el objeto event (con ese nombre) también disponible dentro del atributo.

Si el atributo es no uno de los eventos intrínsecos, "this" será el window objeto global.


Notas al pie:

* a menos que, por supuesto, que pasó a tener una var global llamada "nodeType"

0

this cuando se utiliza en JavaScript en un atributo de elemento HTML es una referencia del elemento en sí. Entonces, this en el contexto de su formulario es el formulario objeto DOM.

En otras palabras, un uso más práctico del la palabra clave :)

+2

No, la palabra clave 'this' apunta al elemento solo para atributos de eventos intrínsecos (por ejemplo' "onfoo" '). –

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

aparece "verdadero" al hacer clic en "Enviar". Es el objeto ventana. Una posible referencia relevante: https://developer.mozilla.org/en/DOM/element.addEventListener - vea la sección debajo de "El valor de esto dentro del controlador".

Cuestiones relacionadas