Übergeben Sie thisden Inline-Click-Handler
<a href="123.com" onclick="click123(this);">link</a>
oder event.targetin der Funktion verwenden (gemäß dem W3C DOM Level 2 Event-Modell )
function click123(event)
{
var a = event.target;
}
Aber natürlich ist IE anders , also ist die Vanille-JavaScript-Methode, um damit umzugehen
function doSomething(e) {
var targ;
if (!e) var e = window.event;
if (e.target) targ = e.target;
else if (e.srcElement) targ = e.srcElement;
if (targ.nodeType == 3)
targ = targ.parentNode;
}
oder weniger ausführlich
function doSomething(e) {
e = e || window.event;
var targ = e.target || e.srcElement || e;
if (targ.nodeType == 3) targ = targ.parentNode;
}
Wo eist das event object, was in anderen Browsern als dem IE an die Funktion übergeben wird?
Wenn Sie jedoch jQuery verwenden, würde ich unauffälliges JavaScript dringend empfehlen und jQuery verwenden, um Ereignishandler an Elemente zu binden.
if (!e) var e = window.event;ist etwas überflüssig -eist bereits deklariert, warum nochmal?ifkann auch insgesamt zugunsten eines kürzeren ternären - vermieden werdene = e || window.event. Das Gleiche gilt füre.target- diese 3 Zeilen können leicht durch -var target = e.target || e.srcElement;)