JavaScript Checkboxen array per Link checked und unchecked stellen

Shadow1701

Ensign
Registriert
Juli 2012
Beiträge
218
Ich grüße euch!

Das Hauptproblem ist, dass ich wenig Ahnung von JavaScript habe, deshalb kämpfe ich heute wieder.
Ich habe mir was aus dem Netz kopiert und angepasst, es funktioniert aber nicht und ich habe keine Ahnung warum. Die Konsole von Firefox gibt mir keinen Fehler aus, sie gibt mir gar nichts aus.
Das Ziel ist, eine Reihe von Checkboxen die den gleichen Namen haben aber ein Array sind, die nach dem Absenden der Form per PHP ausgewertet werden, zu aktivieren und deaktivieren. Aber nur diese Checkboxen, die Checkboxen mit anderen Namen sollen davon unberührt bleiben.

Aufgerufen wir das mit:
HTML:
<a href="javascript:checkboxch('true')">aktivieren</a> / <a href="javascript:checkboxch('false')">deaktivieren</a>

Ausgeführt werden soll:
Javascript:
function checkboxch( bChecked )
{
    for ( i = 1; i <= document.getElementsByName("updateepisode").length; i++ )
    {
        document.getElementsByName("updateepisode")[i].checked = bChecked;
    }
    

}

Die Checkbox ist diese hier, beginnend immer mit 1, die Anzahl variiert.
HTML:
<input type="checkbox" name="updateepisode[1]" value="true" checked="checked"/>

Kann mir bitte jemand helfen?
 
Damit hast du mir das Problem genannt, aber die Lösung habe ich nicht:

Das hier funktioniert nicht, es gibt keine Rückmeldung über die Konsole:
Javascript:
function checkboxch( bChecked )
{
    for ( i = 1; i <= document.getElementsByName("updateepisode[]").length; i++ )
    {
        //document.checkepisodesstep2.elements[i].checked = bChecked;
        document.getElementsByName("updateepisode")[i].checked = bChecked;
    }
  

}

Für nachfolgenden Code bekomme ich diese Fehler:
Uncaught SyntaxError: expected expression, got ']'
Uncaught ReferenceError: checkboxch is not defined

Javascript:
function checkboxch( bChecked )
{
    for ( i = 1; i <= document.getElementsByName("updateepisode")[].length; i++ )
    {
        //document.checkepisodesstep2.elements[i].checked = bChecked;
        document.getElementsByName("updateepisode")[i].checked = bChecked;
    }
  

}


edit:
Wenn ich eines dieser beiden hier ausführe
Javascript:
document.getElementsByName("updateepisode[1]").checked = false;
document.getElementsByName("updateepisode")[1].checked = false;
passiert auch nichts.
 
Du hast das Problem nicht verstanden.
Dein Code in deinem letzten Post sucht nach updateepisode[] (oben) oder updateepisode (unten). So heißen die Checkboxen aber nicht, die heißen updatepisode[ZAHL]. D. h. du baust dir zuerst mal eine Schleife, die diese Namen mit Zahl und eckigen Klammern generieren kann.

Irgendwas machst du aber auch grundlegend falsch. Zum einen meckert der Interpreter, dass er ein ] findet, das heißt es fehlt das dazu passende [. Und dann findet er die eine Funktion nicht. Sicher, dass das alles im richtigen Scope arbeitet?

Hier mal ein Referenzbeispiel. Orientiere dich da dran.
 
Zuletzt bearbeitet:
ich habe jetzt das hier ausprobiert, einfach um die erste checkbox zu deaktivieren.

Javascript:
function testit()
{
    alert("ich werde aufgerufen");
    document.getElementsByName("updateepisode[1]").checked = false;
}

Das Alert funktioniert, die Checkbox wird nicht deaktiviert.
 
Javascript:
document.querySelectorAll("input[name^='updateepisode']").forEach((element) => {
    element.checked = bChecked;
});

"name^=" für "Name beginnt mit"
 
  • Gefällt mir
Reaktionen: netzgestaltung, Marco01_809 und Shadow1701
Es funktioniert jetzt. Der Plan war es, so viel wie möglich in Javascript zu realisieren. Das Ergebnis ist, ich habe so wenig wie möglich in JS gemacht und soviel wie möglich in PHP.

Javascript:
function checkupdates(bChecked,id,max) {

    var c = 1;
    while (c <= max) {
       
        theid = id + c;
               
        if (bChecked=='true') document.getElementById(theid).checked = true;
        if (bChecked=='false') document.getElementById(theid).checked = false;
       
        c++;
    }
}

edit:
@Ben301
Wir haben uns um Sekunden beim Posten verfehlt. Meine Lösung ist jetzt fertig implementiert und läuft. Das passt jetzt. :)
Trotzdem vielen Dank für deine Mühe.
 
Bedenke... JS lässt sich easy manipulieren. Backend Auswertung ist schon korrekt hier.
 
Zurück
Oben