• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

[ERLEDIGT] addEventListener mit Array

sebjel

Neues Mitglied
Hallo,

ich stehe gerade vor einem Problem, was eigentlich gar nicht so kompliziert klingt, bei mir aber irgendwie nicht klappen mag.

Ich habe folgenden Code:
Code:
"use strict";

{  
const init = () => $$('[alt = lightbulb]').addEventListener("click", () => console.log("init"));
 
init();
}

Ich habe also mehrere Bilder, bei denen das Wort "lightbulb" bei alt hinterlegt ist, der Selektor $$('[alt = lightbulb]') gibt mir ein Array aus. Nun kann ich allerdings kein Event hinzufügen, da dann die Fehlermeldung "$$(...).addEventListener is not a function" kommt. Anscheinend kann ich den Event-Listener nicht mit einem Array durchführen.

Gibt es da Möglichkeiten, wie man dies trotzdem durchführen kann?
 
Werbung:
Code:
$$('[alt = lightbulb]')
der Selektor $$('[alt = lightbulb]')

Nun kann ich allerdings kein Event hinzufügen, da dann die Fehlermeldung "$$(...).addEventListener is not a function" kommt.
Kann es sein, dass es sich hierbei um ein jQuery-Script handelt?
  1. jQuery-Selektoren besitzen nur ein $-Zeichen -> https://api.jquery.com/category/selectors/
  2. Vorsichtshalber im Selektor das Leerzeichen vor und nach dem =-Zeichen entfernen. Oder existiert diese Schreibweise in dieser Form auch im HTML-Code?
  3. Ersetze .addEventListener() durch .on() (Grund für die Fehlermeldung).
  4. Weil's hier nicht ersichtlich ist: Das Script am Dokumentende (vor </body></html>) aufrufen, ansonsten mit $( document ).ready() ausstatten.
Im Netz habe ich zwei JSFiddle-Beispiele (jQuery-Scripts) aufgestöbert, die demonstrieren, dass einem Array problemlos ein Eventhandler hinzugefügt werden kann:
  1. https://jsfiddle.net/7yrq7dfz/
  2. https://jsfiddle.net/arap0gcf/
 
Kann es sein, dass es sich hierbei um ein jQuery-Script handelt?

Willkommen im Jahre 2016. Das $ wird auch in ES6, bsw. für String-Interpolation verwendet. Im obigen Fall ist es eine Chrome-eigene Abkürzung für document.querySelectorAll.

Zur Frage:
$$('[alt = lightbulb]') liefert eine Collection und an die lässt sich kein EventListener anhängen. Du könntest das Array aber durch eine Schleife laufen lassen.
Code:
let collection = document.querySelectorAll('[alt = lightbulb]');

let init = function() {
  console.log('clicked');
}

for (let item of collection) {
  item.addEventListener('click', ()=>
    init()
  );
}
 
Werbung:
Danke für die Antworten!

Habs jetzt einfach so gelöst, dass ich um alle Bilder mit dem zugehörigen alt eine div gestellt habe und dann mit dem EventListener diese div anspreche.
 
Zurück
Oben