Javascript click-Ereignis-listener auf mehreren Elementen und Ziel-ID bekommen
Habe ich eine javascript-Datei, legt ein EventListener, der 'Klick' auf jedes element mit der <article>
tag. Ich möchte die id von dem Artikel geklickt werden, wenn das event feuert. Aus irgendeinem Grund, mein code produziert nichts!
Meine javascript:
articles = document.getElementsByTagName('article');
articles.addEventListener('click',redirect(e),false);
function redirect(e){
alert(e.target.id);
}
Warum das nicht funktioniert? BTW mein Artikel-setup ist in einer Funktion, die aufgerufen wird, wenn das Fenster geladen ist, und ich weiß, dass funktioniert sicher, weil die Funktion hat, andere Sachen, die funktionieren.
BEARBEITEN
Also habe ich Fix mein code also es wird Schleife und fügen Sie den listener zu jedem Artikel-element, und jetzt bekomme ich eine alert-box mit nix drin. Wenn Sie versuchen, um die Ausgabe der e.Ziel ohne die ID, bekomme ich die folgende Nachricht für jedes element:
[object HTMLHeadingElement]
Irgendwelche Vorschläge?
NOCH EIN EDIT
Meine aktuellen javascript-code:
function doFirst(){
articles = document.getElementsByTagName('article');
for (var i = 0; i < articles.length; i++) {
articles[i].addEventListener('click',redirect(articles[i]),false);
}
}
function redirect(e){
alert(e.id);
}
window.addEventListener('load',doFirst,false);
Dies zeigt meiner alert-Boxen, wenn die Seite fertig geladen ist, ohne zu berücksichtigen, dass ich noch nicht geklickt wurde eine verdammt Sache :O
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie werden nicht übergeben, ein Artikel-Objekt umleiten als parameter.
Versuchen, diese (BEARBEITEN):
Hoffe, es löst den Fehler.
Warum ist niemand zu erwähnen, ein einzelnes Ereignis, welche Prüfungen für das angeklickte element?
ist es performant haben weniger Ereignisse..
wenn Sie nicht brauchen, zu überprüfen, klicken Sie auf Ereignisse auf den ganzen Körper Sie konnte, befestigen Sie die Veranstaltung, um einige näher übergeordneten element
Ausführung des redirect-Funktion statt der übergabe der Referenz, versuchen Sie dies:
Edit:
Auch, getElementsByTagName liefert ein array mit den Artikeln, so müssen Sie eine Schleife durch und rufen Sie addEventListener () auf jeden einzelnen von Ihnen.
getElementsByTagName
gibt eine nodelist. Können Sie fügen Sie dann ein eventlistener zu jedem dieser Elemente mit einer for-Schleife.Diese mini-javascript-Bibliothek (1,3 KB) können all diese Dinge tun,
https://github.com/Norair1997/norjs/
Diesem plugin kann mit solchen Sachen und mehr
wenn nicht funktioniert, versuchen Sie dann, indem e.id statt e.Ziel.id Insider-Alarm wie unten:
Dank.