2012-10-10 15 views
23

Duplicar posible:
The current element as its Event function paramPasando 'esto' a un evento onclick

Que este trabajo

<script type="text/javascript"> 
var foo = function(param) 
{ 
    param.innerHTML = "Not a button"; 
}; 
</script> 
<button onclick="foo(this)" id="bar">Button</button> 

en lugar de esto?

<script type="text/javascript"> 
var foo = function() 
{ 
    document.getElementId("bar").innerHTML = "Not a button"; 
}; 
</script> 
<button onclick="foo()" id="bar">Button</button> 

Y sería el primer método me permite cargar JavaScript de otras partes para realizar acciones en cualquier elemento de la página?

+2

No tiene mucho sentido preguntar si algo * podría * funcionar. Mejor prueba la tuya y también aclara los comandos que quieres usar y con los que no estás seguro. – hakre

Respuesta

24

El código que usted tiene que trabajar, pero se ejecuta desde el contexto global, lo que significa que this se refiere al objeto global.

<script type="text/javascript"> 
var foo = function(param) { 
    param.innerHTML = "Not a button"; 
}; 
</script> 
<button onclick="foo(this)" id="bar">Button</button> 

También puede utilizar la alternativa no en línea, lo que unido a y ejecutado por el contexto elemento específico que le permite acceder al elemento de this.

<script type="text/javascript"> 
document.getElementById('bar').onclick = function() { 
    this.innerHTML = "Not a button"; 
}; 
</script> 
<button id="bar">Button</button> 
5

Sí, el primer método funcionará en cualquier elemento llamado desde cualquier otro lugar, ya que siempre tomará el elemento de destino independientemente de su id.

cheque este violín

http://jsfiddle.net/8cvBM/

12

Siempre se puede llamar Funciton diferente: foo.call(this); de esta manera usted será capaz de utilizar this contexto dentro de la función.

Ejemplo:

<button onclick="foo.call(this)" id="bar">Button</button>​

var foo = function() 
{ 
    this.innerHTML = "Not a button"; 
}; 
+0

¡Genial! ¿Hay algún inconveniente para esto? –

3

En JavaScript this siempre se refiere al “dueño” de la función que estamos ejecutando, o mejor dicho, al objeto de que una función es un método de. Cuando definimos nuestra función fiel doSomething() en una página, su propietario es la página, o más bien, el objeto de ventana (u objeto global) de JavaScript.

How does the "this" keyword work?

+0

'this' es el objeto desde el que se llama a la función en el momento de la llamada. No hay noción de "propietario" en javascript. Si se llama a la función sin el uso de un objeto, 'this' es el objeto global (' ventana' en un navegador). Por ejemplo: 'function f() {console.log (this); }; o = {a: f}; o.a(); var b = o.a; b(); ' – Pierre

Cuestiones relacionadas