react passing event javascript events inline argument-passing

passing - ¿Cómo pasar el evento como argumento a un controlador de eventos en línea en JavaScript?



passing arguments to event handlers (2)

// this e works document.getElementById("p").oncontextmenu = function(e) { e = e || window.event; var target = e.target || e.srcElement; console.log(target); }; // this e is undefined function doSomething(e) { e = e || window.event; var target = e.target || e.srcElement; console.log(target); }

<p id="p" onclick="doSomething(e)"> <a href="#">foo</a> <span>bar</span> </p>

Se han hecho algunas preguntas similares.

Pero en mi código, estoy tratando de obtener elementos secundarios a los que se haya hecho clic, como a o span .

Entonces, ¿cuál es la forma correcta de pasar el event como un argumento al controlador de eventos, o cómo obtener eventos dentro del controlador sin pasar un argumento?

editar

Soy consciente de addEventListener y jQuery , proporcione una solución para pasar el evento al evento en inline hander.


Como los eventos en línea se ejecutan como funciones, simplemente puede usar argumentos .

<p id="p" onclick="doSomething.apply(this, arguments)">

y

function doSomething(e) { if (!e) e = window.event; // ''e'' is the event. // ''this'' is the P element }

El ''evento'' que se menciona en la respuesta aceptada es en realidad el nombre del argumento pasado a la función. No tiene nada que ver con el evento global.


pasar el objeto del event :

<p id="p" onclick="doSomething(event);">

para obtener el elemento secundario cliqueado (se debe usar con el parámetro de event :

function doSomething(e) { e = e || window.event; var target = e.target || e.srcElement; console.log(target); }

pasar el elemento mismo (DOMElement):

<p id="p" onclick="doThing(this);">

ver ejemplo en vivo en jsFiddle