Dyn. Checkbox
Alex
- javascript
Hallo,
habe folgenden Code erstellt:
var anz = 10;
for(var i=1; i<=anz; i++)
{
var c = document.createElement('input');
c.type = 'checkbox';
c.id = 'ck_' + i;
var t = document.createTextNode('Check ' + i);
var s = document.createElement('span');
s.onclick = function(){ ckb(c) };
s.appendChild(t);
document.getElementById('div');
}
function ckb(ck)
{
ck.checked = !ck.checked;
}
Kurz erklärt: es soll beim Klick auf den Text jeweils der dazugehörige Checkbox aktiviert/deaktiviert werden.
Problem ist, dass immer nur der letzte Checkbox hier angesteuert wird, egal welchen Text ich anklicke. Ist das normal? Wie muss ich das sonst machen?
Vielen Dank!
Alex
hi,
Kurz erklärt: es soll beim Klick auf den Text jeweils der dazugehörige Checkbox aktiviert/deaktiviert werden.
Wozu Javascript?
Label existieren.
gruß,
wahsaga
Wozu Javascript?
Label existieren.
eine lange Geschichte...
Problem ist, dass immer nur der letzte Checkbox hier angesteuert wird, egal welchen Text ich anklicke. Ist das normal? Wie muss ich das sonst machen?
Das Problem ist das in deinem closure die Variabel c immer den Inhalt des letzten Inputelement hat.
Die einfachste Lösung ist, dem Element das den klick ausführt den gewünschtne Wert als Eigenschaft mitgeben.
s.c = c;
s.onclick = function(){ ckb(this.c) };
Struppi.
Das Problem ist das in deinem closure die Variabel c immer den Inhalt des letzten Inputelement hat.
ist das nicht egal? Es sind doch 10 CheckBoxen und 10 TextNode. Alle 10 TextNode's greifen hier nur auf den letzten CheckBox!? Eine Referenz im Spiel? Wie kann ich das umgehen?
Die einfachste Lösung ist, dem Element das den klick ausführt den gewünschtne Wert als Eigenschaft mitgeben.
s.c = c;
s.onclick = function(){ ckb(this.c) };
Geht nicht :(
hi,
Das Problem ist das in deinem closure die Variabel c immer den Inhalt des letzten Inputelement hat.
ist das nicht egal?
Was soll die blöde Frage?
Du hast doch gemerkt, dass es nicht egal ist.
Es sind doch 10 CheckBoxen und 10 TextNode. Alle 10 TextNode's greifen hier nur auf den letzten CheckBox!? Eine Referenz im Spiel?
Nein, ein Closure - das Stichwort nannte Struppi bereits.
Wie kann ich das umgehen?
Auch einen Alternativvorschlag machte Struppi bereits.
gruß,
wahsaga
hi,
Das Problem ist das in deinem closure die Variabel c immer den Inhalt des letzten Inputelement hat.
ist das nicht egal?Was soll die blöde Frage?
Du hast doch gemerkt, dass es nicht egal ist.Es sind doch 10 CheckBoxen und 10 TextNode. Alle 10 TextNode's greifen hier nur auf den letzten CheckBox!? Eine Referenz im Spiel?
Nein, ein Closure - das Stichwort nannte Struppi bereits.
Wie kann ich das umgehen?
Auch einen Alternativvorschlag machte Struppi bereits.
gruß,
wahsaga
Blödes HTML :( Ich mag es nicht leiden.
@wahsaga
warum denn nicht gleich so? Muß man immer zuerst auf die Nase fallen?
Danke!
hi,
bitte zitiere vernünftig,
warum denn nicht gleich so?
Warum nicht gleich _was_ _wie_?
Muß man immer zuerst auf die Nase fallen?
Ich muss nicht.
Ob du musst, weiss ich nicht.
gruß,
wahsaga
hi,
bitte zitiere vernünftig,
das war keine Zitat. Ich habe dich gemeint (@wahsaga) also mit @
warum denn nicht gleich so?
Warum nicht gleich _was_ _wie_?
muss man die Hilfestellung sich erst erkaufen/erbetteln? Warum schreibst du nicht gleich, was man falsch macht und wie es gemacht werden soll? Das hier:
»»Wozu Javascript?
»»Label existieren.
hilft mir nicht wirklich weiter... Wenn, dann sollte man diese "kurz und knapp" lieber gleicht sein lassen, oder?
Muß man immer zuerst auf die Nase fallen?
Ich muss nicht.
Ob du musst, weiss ich nicht.
Muß ich nicht :). Manche Leute lassen einen auf die Nase fallen...
hi,
bitte zitiere vernünftig,
das war keine Zitat. Ich habe dich gemeint (@wahsaga) also mit @
Abgesehen davon, dass wir uns hier in einem Forum und nicht in einem Board befinden, @-Ansprachen hier also unnötig sind, wenn man auf die richtigen Postings antwortet - bezog ich mich auf dein sinnloses Fullquote.
muss man die Hilfestellung sich erst erkaufen/erbetteln?
IdR. nicht, aber -
Warum schreibst du nicht gleich, was man falsch macht und wie es gemacht werden soll? Das hier:
»»Wozu Javascript?
»»Label existieren.
hilft mir nicht wirklich weiter...
Ich kann doch im Voraus nicht wissen, dass du _so_ wenig Ahnung von HTML hast, dass dir Label für Formularelemente nicht bekannt sind.
Dass dir ihre Existenz kurzzeitig entfallen sein könnte, habe ich noch in betracht gezogen - und dich deshalb noch mal auf diese hingewiesen, inklusive Verlinkung.
Wenn, dann sollte man diese "kurz und knapp" lieber gleicht sein lassen, oder?
Die verlinkte Seite erklärt recht detailiert, was man mit Labels erreichen kann - wenn du dir das aufmerksam durchgelesen hättest, hättest du m.E. erkennen sollen, dass diese dein Problem bereits lösen könnten, ohne das du per Javascript auf irgendwelche Events reagieren musst.
Wenn du aber nicht mal bereit bist, dir einen hilfreichen Link, der dir präsentiert wird, halbwegs aufmerksam durchzuarbeiten - dann stimme ich dir bezüglich des lieber-gleich-bleiben-Lassens natürlich zu: Dann lass' es halt sein.
Und irgendwelche Hinweise auf "lange Geschichten", die sich letztendlich als völliger Unfug herausstellen dürften, kannst du dir auch sparen.
gruß,
wahsaga
Ich kann doch im Voraus nicht wissen, dass du _so_ wenig Ahnung von HTML hast, dass dir Label für Formularelemente nicht bekannt sind.
das sieht man doch, wenn ich Labels kennen würde, würde ich nicht auf JS zurückgreifen. Ich sitze schon 3 Stunden an diesen Blödsinn. Und ich muß arbeiten, also Vorankommen. Ich werde dafür bezahlt und das nicht wenig. Meinst du ich mache es aus Spass?
Dass dir ihre Existenz kurzzeitig entfallen sein könnte, habe ich noch in betracht gezogen - und dich deshalb noch mal auf diese hingewiesen, inklusive Verlinkung.
Wenn, dann sollte man diese "kurz und knapp" lieber gleicht sein lassen, oder?
Die verlinkte Seite erklärt recht detailiert, was man mit Labels erreichen kann - wenn du dir das aufmerksam durchgelesen hättest, hättest du m.E. erkennen sollen, dass diese dein Problem bereits lösen könnten, ohne das du per Javascript auf irgendwelche Events reagieren musst.
Wenn du aber nicht mal bereit bist, dir einen hilfreichen Link, der dir präsentiert wird, halbwegs aufmerksam durchzuarbeiten - dann stimme ich dir bezüglich des lieber-gleich-bleiben-Lassens natürlich zu: Dann lass' es halt sein.
Wenn ich nicht weiß, was Labels sind und nur eine knappe Antwort aus 4 Wörtern kriege, komme ich mir verar...t vor. Meinst du ich lese mir dann die Anleitung über Labels durch. Außerden wie gesagt, ich habe keine Zeit für jegliche Lektüren. Ich muß vorankommen. Darüber hinaus ist HTML nicht mein Job. Ich muß nur eine einzige Vorlage erstellen und gut is... Danach brauche ich das nicht mehr.
hi,
Ich kann doch im Voraus nicht wissen, dass du _so_ wenig Ahnung von HTML hast, dass dir Label für Formularelemente nicht bekannt sind.
das sieht man doch, wenn ich Labels kennen würde, würde ich nicht auf JS zurückgreifen.
Mit Javascript spielen die Leute aus den verschiedensten Beweggründen herum - und nicht immer aus sinnvollen.
Ich sitze schon 3 Stunden an diesen Blödsinn. Und ich muß arbeiten, also Vorankommen. Ich werde dafür bezahlt und das nicht wenig.
Du wirst für etwas bezahlt, von dem du so wenig Ahnung hast?
Meinen Glückwunsch.
Allerding solltest du dich dann m.E. an kostenpflichtigen Support wenden, wenn du damit nicht zurechtkommst, und auch nicht bereit bist, dir mal eben eine Erklärung durchzulesen.
Wenn ich nicht weiß, was Labels sind und nur eine knappe Antwort aus 4 Wörtern kriege, komme ich mir verar...t vor.
Und ich mir, wenn ich dir hier als Antwort einen erklärenden Link poste -
Meinst du ich lese mir dann die Anleitung über Labels durch.
gruß,
wahsaga
Ich sitze schon 3 Stunden an diesen Blödsinn. Und ich muß arbeiten, also Vorankommen. Ich werde dafür bezahlt und das nicht wenig.
Du wirst für etwas bezahlt, von dem du so wenig Ahnung hast?
Meinen Glückwunsch.
Wer lesen kann - ist klar im Vorteil. Ich werde bezahlt, eben für was Anderes und nicht für dieses Sch... HTML/JS
Allerding solltest du dich dann m.E. an kostenpflichtigen Support wenden, wenn du damit nicht zurechtkommst, und auch nicht bereit bist, dir mal eben eine Erklärung durchzulesen.
Welche Erklärung? Hast du die selber gelesen? Da sitze ich noch 3 Stunden dran, bis ich alles durchgelesen habe. Weniger ist oft mehr...
Wenn ich nicht weiß, was Labels sind und nur eine knappe Antwort aus 4 Wörtern kriege, komme ich mir verar...t vor.
Und ich mir, wenn ich dir hier als Antwort einen erklärenden Link poste -
Meinst du ich lese mir dann die Anleitung über Labels durch.
- und du fauler S*** dann noch nicht mal bereit bist, dir das kurz durchzulesen.
Es ist gut jetzt. Ich habe keinen Bock auf diese Diskussion. Wenn du Zeit dafür hast hier eine Sinnlose Diskussion zu führen, freue ich mich für dich. Du hast ja vielleicht Langeweile, anstatt vernünftig zu helfen. Meine Güte
hi,
Welche Erklärung? Hast du die selber gelesen? Da sitze ich noch 3 Stunden dran, bis ich alles durchgelesen habe.
Wenn du so langsam liest, ist das nicht mein Problem.
Weniger ist oft mehr...
So wenig, wie du bereit bist, selber zu leisten - ist das in meinen Augen Schnorrerei.
gruß,
wahsaga
Ich werde dafür bezahlt und das nicht wenig.
Schön, wohin darf ich meine Rechnung für https://forum.selfhtml.org/?t=151274&m=983771 schicken?
Siechfred
Die einfachste Lösung ist, dem Element das den klick ausführt den gewünschtne Wert als Eigenschaft mitgeben.
s.c = c;
s.onclick = function(){ ckb(this.c) };
> Geht nicht :(
geht wohl.
Struppi.
--
[Javascript ist toll](http://javascript.jstruebig.de/) (Perl auch!)
Die einfachste Lösung ist, dem Element das den klick ausführt den gewünschtne Wert als Eigenschaft mitgeben.
s.c = c;
s.onclick = function(){ ckb(this.c) };
> > Geht nicht :(
>
> geht wohl.
Beim Anklicken: 'undefined' ist Null oder kein Objekt.
Was ist 'undefined'?
Alex
geht wohl.
Beim Anklicken: 'undefined' ist Null oder kein Objekt.Was ist 'undefined'?
Keine Ahnung, irgendwas machst du falsch nur was?
Struppi.
geht wohl.
Beim Anklicken: 'undefined' ist Null oder kein Objekt.Was ist 'undefined'?
Keine Ahnung, irgendwas machst du falsch nur was?
Das wüsste ich auch gern :) Mache gerade mein Lernkurs mit HTML u. JS nach dem Motto: Learning by Doing.
Beim Ankliken auf ein Button werden im div-Abschnitt 10 "dieser" Checkboxen. Was kann man hier falsch machen?
Alex
Keine Ahnung, irgendwas machst du falsch nur was?
Das wüsste ich auch gern :) Mache gerade mein Lernkurs mit HTML u. JS nach dem Motto: Learning by Doing.Beim Ankliken auf ein Button werden im div-Abschnitt 10 "dieser" Checkboxen. Was kann man hier falsch machen?
Eigentlich nichts.
Struppi.
Kurz erklärt: es soll beim Klick auf den Text jeweils der dazugehörige Checkbox aktiviert/deaktiviert werden.
Hänge mit Hilfe der geeigneten DOM-Methoden statt des span- ein label-Element ein.
Siechfred
Kurz erklärt: es soll beim Klick auf den Text jeweils der dazugehörige Checkbox aktiviert/deaktiviert werden.
Hänge mit Hilfe der geeigneten DOM-Methoden statt des span- ein label-Element ein.
Warum nicht span?
hi,
Hänge mit Hilfe der geeigneten DOM-Methoden statt des span- ein label-Element ein.
Warum nicht span?
Weil du mit Label gar kein Javascript mehr bräuchtest, um per Klick auf den Text den Zustand der Checkbox zu ändern.
Aber einfach machen willst du es dir ja wegen irgendeiner ominösen langen Geschichte offenbar nicht ...
gruß,
wahsaga
Hänge mit Hilfe der geeigneten DOM-Methoden statt des span- ein label-Element ein.
Warum nicht span?
Siehe wahsaga. Ansonsten hier ein kleiner Denkanstoß:
var parentElem = document.getElementById('elternelement');
var anz = 10;
for(var i=1; i<=anz; i++) {
var myLabel = document.createElement('label');
myLabel.[link:http://de.selfhtml.org/javascript/objekte/htmlelemente.htm#label@title=htmlFor] = 'ck_' + i;
var labeltext = document.createTextNode('Check ' + i);
myLabel.appendChild(labeltext);
parentElem.appendChild(myLabel);
var myCheckbox = document.createElement('input');
myCheckbox.type = 'checkbox';
myCeckbox.id = 'ck_' + i;
parentElem.appendChild(myCheckbox);
}
Siechfred
Siehe wahsaga. Ansonsten hier ein kleiner Denkanstoß:
var parentElem = document.getElementById('elternelement');
var anz = 10;
for(var i=1; i<=anz; i++) {
var myLabel = document.createElement('label');
myLabel.[link:http://de.selfhtml.org/javascript/objekte/htmlelemente.htm#label@title=htmlFor] = 'ck_' + i;
var labeltext = document.createTextNode('Check ' + i);
myLabel.appendChild(labeltext);
parentElem.appendChild(myLabel);
var myCheckbox = document.createElement('input');
myCheckbox.type = 'checkbox';
myCeckbox.id = 'ck_' + i;
parentElem.appendChild(myCheckbox);
}
>
> Siechfred
Vielen Dank! Das nennt man Hilfe ;) Ich schulde dir was...
Alex