kleur button wijzigen als andere buttons groen zijn

Status
Niet open voor verdere reacties.

Orcaa

Gebruiker
Lid geworden
1 nov 2010
Berichten
125
heb webpage met aantal rode buttons. een button opent tabel waar checkmarks ingevuld kunnen worden. Als alle checkmarks gezet zijn dan veranderd kleur button naar groen.
Nu wil ik overkoepende rode button ("GC_POD1") groen laten worden als alle onderliggende butons ook groen zijn.

buttons_groen.JPG

en buttons_groen_check.JPG

Hoe kan ik kleur van buttons n javascript controleren en dan button "GC_POD1" ook groen laten worden

Alvast bedankt
 
Je laat geen code zien dus het is gissen. Je kan dit concept zelf verder uitwerken.
Code:
<style>
.rood  { background: red }
.groen { background: green }
</style>

<form id="formulier">
<button id="GC_POD1" class="rood" type="button">GC_POD1</button>
<table>
  <tr>
    <td><button type="button" class="groen">button 1</button>
    <br><label><input type="checkbox" value="A"> checkbox A</label>
    <br><label><input type="checkbox" value="B"> checkbox B</label></td>
  </tr>
  <tr>
    <td><button type="button" class="groen">button 2</button>
    <br><label><input type="checkbox" value="C"> checkbox C</label>
    <br><label><input type="checkbox" value="D"> checkbox D</label></td>
  </tr>
</table>
</form>

<script>
function allButtonsGreen() {
    var subButtons = document.querySelectorAll("#formulier table button");
    for (var i = 0; i < subButtons.length; i++) {
        if (subButtons[i].className.indexOf('rood') != -1) return false;
    }
    return true;
}
var formObj = document.getElementById('formulier');
formObj.addEventListener("change", function(e) {
    e.preventDefault();
    var gcPod1  = document.getElementById('GC_POD1');
    var gcClass = (allButtonsGreen() == true) ? "groen" : "rood";
    gcPod1.classList.remove("groen", "rood");
    gcPod1.classList.add(gcClass);
});
</script>
De EventListener luistert naar veranderingen in het formulier.
Als er iets verandert wordt in functie allButtonsGreen gekeken of alle buttons groen zijn.
Zoja, dan wordt GC_POD1 ook groen.

Er wordt hierboven met class=".." gewerkt omdat dit minder code vraagt.

Suc6. Have fun.
 
Hallo Bron,

bedankt voor je voorstel, maar het doet niet helemaal wat ik wil.

Button_rood_groen_1.JPG
Dit heb je als uitgangspositie, maar als checkboxes niet geselecteerd zijn dan moeten buttons rood zijn. Als checkbox A en checkbox B geselecteerd zijn dan moet button_1 pas groen worden. Hetzelfde voor button_2.
En als button_1 en button_2 groen zijn, dan pas moet button GCPOD1 pas groen worden. Maar als je een checkmark uncheck dan moet de button van die checkbox weer rood worden en ook de overkoepelende button GCPOD1

Button_rood_groen_2.JPG
Hier zie je dat maar 1 checkbox geselecteerd is en toch zijn alle buttons groen.

Button_rood_groen_3.JPG
Hier is checkmark weer unchecked en toch blijven alle buttons groen.

hoop dat ik het goed uitgelegd heb en dat je een oplossing wet

Alvast bedankt,
 
Als alle checkmarks gezet zijn dan veranderd kleur button naar groen.
Nu wil ik overkoepende rode button ("GC_POD1") groen laten worden als alle onderliggende butons ook groen zijn.
De code gaat uit van de situatie die je hebt beschreven, dat de check's er al voor zorgen dat de bijbehorende button van kleur verandert.
Je vraagt alleen naar een 'overkoepelende button'. Werken de check's niet op de bijbehorende button?
 
Hallo Bron,

Het klopt dat de buttons nu al van kleur veranderen als de checkmarks geselecteerd zijn.

Uitgangssituatie is de button GCPOD1 rood en ook 1 van de onderliggende buttons is nog rood. Pas als alle checkboxen onder de rode button geselecteerd worden, zal ook die button groen worden. En als dan de twee onderliggende buttons groen zijn zal ook de overkoepelende button GCPOD1 groen worden.

Wordt er 1 checkbox unchecked, dan zal die button weer rood worden en ook dus de overkoelende button

Hoop dat ik het een beetje duidelijk heb uitgelegd

Groet
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan