2010-09-21 17 views
5

Ho bisogno di ottenere l'elemento cliccato nella funzione getClickedElement. Come posso fare questo?JavaScript: Get elemento cliccato

<html> 
<head> 
    <script> 
    function getClickedElement() { 
    } 
    </script> 
</head> 
<body> 
    <a href="javascript:alert(getClickedElement())" id="test">click me!!!</a> 
</body> 
</html> 

Posso impostare solo l'attributo href. Non riesco a impostare l'evento onclick perché questo elemento è generato da lib di terze parti.

Grazie.

+0

Sarebbe utile se si ha detto perché ne hai bisogno, cosa vuoi fare. Forse ci sono altri modi. – AlexanderMP

+0

Che cos'è la libreria di terze parti? –

risposta

7

Non è possibile ottenere l'elemento selezionato in un URL javascript:. L'evento è già terminato, quindi non c'è event.target (o window.event.srcElement per IE) e i collegamenti javascript: non vengono invocati con this set (quindi ottieni window).

Naturalmente, se si conosce il collegamento in questione è id="test" si può fare document.getElementById('test'), ma ho il sospetto che è piuttosto manca il punto di ciò che si vuole fare.

Posso impostare solo l'attributo href. Non riesco a impostare l'evento onclick perché questo elemento è generato da lib di terze parti.

Correggere o rilasciare la lib. javascript: Gli URL sono orrori che dovrebbero essere mai.

È possibile aggiungere un <script> altrove nella pagina? In tal caso, è possibile iniettare un gestore di eventi click sugli elementi senza richiedere alcun markup extra. es .:

for (var i= document.links.length; i-->0;) 
    if (document.links[i] is one of the links you want to target) 
     document.links[i].onclick= someHandlerFunction; 

function someHandlerFunction() { 
    alert(this); 
    return false; 
} 

Infatti, assegnando da JS (con on... o tramite addEventListener con attachEvent fallback per IE) è il modo migliore-pratica di aggiungere gestori di eventi comunque.

+1

Sebbene questa risposta sia stata utile, non sono sicuro di cosa significhi l'autore del messaggio per 'document.links [i] è uno dei link che vuoi scegliere come target '. Come qualcuno scriverà questo confronto nel codice reale?Perché l'autore di questa risposta non ha semplicemente scritto il codice vero e proprio invece di saltare a casaccio nei termini del profano? –

2
<a href="javascript:alert(getClickedElement('test'))" id="test">click me!!!</a> 

<script> 
function getClickedElement (id) { 
    return document.getElementById(id); 
} 
</script> 

oppure, se non è possibile prevedere l'ID, è possibile utilizzare Javascript per allegare eventi dopo che la pagina è stata caricata. Guarda jQuery. Utilizzare qualcosa come $('a').click(function() {return this.id; });

+0

Non conosco l'ID dell'elemento. È generato da lib di terze parti. Posso impostare solo il valore href. – Dumitru

+2

è possibile utilizzare Javascript per allegare eventi dopo che la pagina è stata caricata. Guarda jQuery. Usa qualcosa come '$ ('a'). Click (function() {return this.id;});' – AlexanderMP

0

puoi passarlo come parametro e puoi quindi sapere qual è l'elemento che stai cercando. per esempio:

<html> 
<head> 
    <script> 
    function getClickedElement ($this) { 

    } 
    </script> 
</head>enter code here 
<body> 
    <a href="javascript:alert(getClickedElement(this))" id="test">click me!!!</a> 
</body> 
</html> 

spero che vi aiuterà, mi ha aiutato :)

5

alla seguente domanda statckoverflow dà un modo per rilevare elemento cliccato here

$(document).click(function(event) { 
    var text = $(event.target).text(); 
}); 
+1

C'è poco interesse nel rispondere a una domanda molto vecchia a cui era già stata data una risposta. Inoltre, la tua risposta non aiuta poiché il Poster originale (OP) non utilizzava jquery. – JMax

+4

Questo era esattamente ciò che stavo cercando! –

Problemi correlati