2009-06-03 9 views
17
<script> 
function Hello(){ 
    var caller = arguments.callee.caller; 
    alert(caller); 
} 
</script> 

<input type="button" id="btnHello" value="Hello" onclick="Hello()" /> 

Jak zdobyć przycisk ID z funkcją Witam powyżej zz przechodzącą żadnego argumentu w funkcji WitamJak uzyskać zdarzenie rozmówcy i Dom id elementu

+2

Nawiasem mówiąc, arguments.callee.caller jest odwołaniem do funkcji, jeśli taka istnieje, która wywołała bieżącą funkcję. Nie jest zaimplementowany we wszystkich przeglądarkach i od lat jest przestarzały przez facetów skryptów ecma. – kennebec

Odpowiedz

26

Obiekt zdarzenia jest przekazywany do Halo działają automatycznie. Musisz go odebrać jako argument, a następnie wykonać pracę międzyplatformową, aby pobrać element. Ramy JS pomogą ci tutaj.

function Hello(e){ 
    var caller = e.target || e.srcElement; 
    console.log(caller); 
} 

EDIT
+1 komentarz poniżej Andrzeja. Użyj metody addEventListener i attachEvent, aby uzyskać najlepszą praktykę.

+2

Obiekt zdarzenia jest przekazywany tylko wtedy, gdy jest używany jak btnid.onclick = function (e) {alert (e.target)}; Ale jak uzyskać obiekt zdarzenia, gdy stosujemy zdarzenie jako wbudowane. – Jineesh

+4

IIRC, możesz go uzyskać, ustawiając atrybut 'onlick' na" Hello (zdarzenie) ". –

+2

Dołączaj zdarzenia z dyskretnym JavaScriptem zamiast korzystania z funkcji obsługi zdarzeń, możesz użyć obiektu zdarzenia przekazanego do wywołań zwrotnych zdarzeń. –

Powiązane problemy