Variable bei .addEventListener übergeben

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

mischu

Neues Mitglied
5 Oktober 2020
8
0
1
47
Hallo,
benötige etwas Hilfe.

Ich lasse über einen loop buttons aktivieren und definieren. Funktioniert alles wunderbar! Nun versuche ich über .addEventListener die Eingabe neben den buttons in Textform anzeigen zu lassen. Ist es möglich, um nur eine function zu nutzen, eine weitere Variable zu übergeben? Ich weiß leider nicht wie ich diese Variable parallel zu ev übergeben kann. Möchte nur Javascript verwenden.
Danke & Grüße

Code:
for (var l = 0; l < 10; l++) {
    //verschieden Dinge werden ausgeführt
  
    document.getElementById("id_" + l).addEventListener('input', ausgeben("id_" + l));
}

function ausgeben(ev, id) {
    console.log (id);
    document.getElementById(id).value = ev.target.value;
}
 

mischu

Neues Mitglied
5 Oktober 2020
8
0
1
47
Ich habe nun folgendes versucht, aber leider ohne Erfolg:

Code:
for (var l = 0; l < 10; l++) {

    //verschieden Dinge werden ausgeführt

    document.getElementById("id_" + l).addEventListener(
        'input',
        function (cnt){
            return function() {
                document.getElementById("output_" + l).value = ev.target.value
            }
        }
    );
}
 
Zuletzt bearbeitet:

basti1012

Senior HTML'ler
26 November 2017
1.440
150
63
39
Minden
sebastian1012.bplaced.net
Ich weiß nicht was du bei addEventListener('input') erwartest, aber schau dir mal querySelectorAll an .
Damit sparst du dir das Schleifen gedöns.
Ich weiß nicht was du vorhast ,aber hier kannst du in den Input Feldern reinschreiben und das Ergebniss steht dann da gleich da drunter.
Damit solltest du das was du vorhast eigentlich auch hinbekommen.
 

Sempervivum

Senior HTML'ler
18 Oktober 2016
2.081
404
83
67
Dein Ansatz wird funktionieren, wenn Du let statt var verwendest:
Code:
for (let l = 0; l < 10; l++) {

    //verschieden Dinge werden ausgeführt

    document.getElementById("id_" + l).addEventListener(
        'input', function(ev) {
            document.getElementById("output_" + l).value = ev.target.value
        }
    );
}
Zum Verständnis hat basti1012 früher mal diese Demo gemacht:
Wenn du allerdings schreibst:
Ich lasse über einen loop buttons aktivieren und definieren.
dann wäre es u. U. einfacher, gleich beim Erzeugen der Buttons die Eventlistener zu registrieren. Poste doch mal den Code, mit dem Du sie erzeugst.
 
Werbung: