Path: csiph.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: Maik Koenig Newsgroups: de.comp.lang.javascript Subject: addEventListener funktioniert nicht wie gedacht Date: Sat, 26 Sep 2015 07:25:28 +0200 Lines: 45 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Trace: individual.net MwFLDgUmCnP8bJxdCdu4FAlsi9lSbepdhfXJMdoIrBrSTuxuy/ Cancel-Lock: sha1:iJbSHFLwl+XWGUgN2lNbons1+tY= X-Mozilla-News-Host: news://127.0.0.1:119 X-Enigmail-Draft-Status: N1110 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.2.0 Hamster/2.1.0.1538 Xref: csiph.com de.comp.lang.javascript:4719 Servus! Gegeben ist ein recht umfangreiches Dokument mit ca 120 Input-Feldern. Alle Felder haben neben unterschiedlichen CSS-Klassen auch eine gemeinsam, damit das hier funktioniert(*1): var k = document.getElementsByClassName("Foo"); for(var i = 0; i < k.length; i++) { getID(k[i].id).addEventListener('keyup', Rechnen); getID(k[i].id).addEventListener('change', Rechnen); getID(k[i].id).addEventListener('focus', Fokus(k[i].id), true); getID(k[i].id).addEventListener('blur', Verlassen(k[i].id), true); }; function Fokus(Feld) { getID(Feld).style.background = "yellow"; DebugMeldung ('Fokus wurde erkannt im Feld '+Feld);}; function Verlassen(Feld) { getID(Feld).style.background = ""; DebugMeldung ('Blur wurde erkannt im Feld '+Feld);}; Per onLoad-Event im Body wird die Sammelfunktion aufgerufen, in der u.A. auch obiger Ausschnitt enthalten ist. Etwas später im Code werden alle Felder aus dem LocalStorage mit Inhalten befüllt (oder, wenn dort nichts vorhanden, mit Standardwerten). Das Problem ist jetzt, dass es grundsätzlich funktioniert: Beim Befüllen aus dem Speicher feuert jedes Element die DebugMeldung ab. Aber wenn die Seite fertig geladen im Browser ist (hier: Firefox 40.x.x) reagieren die Funktionen für focus und blur nicht mehr während keyup und change korrekt arbeiten. Ich scheine da irgendwo einen Denkfehler zu haben aber ich komme ums Verrecken nicht drauf wo genau. Kann mir jemand eventuell auf die Sprünge helfen? *1: getID = function(ID) {return document.getElementById(ID);} Greetz, MK -- blog.maikkoenig.de // Des Wahnsinns fette Beute.