Verander HTML checkbox aangevinkt attribuut

Is het mogelijk om het "checked" -attribuut van een selectievakje te wijzigen? Dus ik wil de preselect-waarde in de HTML wijzigen. (Zodat ik het later kan krijgen met innerHTML van JavaScript).

2

3 antwoord

Natuurlijk, als je innerHTML in Javascript gaat gebruiken, kun je gewoon het hele selectievakje opnieuw laden en het laten controleren of niet. De eenvoudigste manier om dit te doen is echter om het aangevinkte kenmerk in Javascript te wijzigen als je toch JS gaat gebruiken.

document.getElementById("myCheckboxId").checked = true;

BEWERK

Ok, dus je moet het in de toekomst opnieuw met innerHTML kunnen krijgen. Zoals ik al zei in mijn eerste zin, zou je innerHTML gewoon kunnen gebruiken om het selectievakje ook in te schakelen. Misschien een beetje hackish, maar het kan wel goed als je het al doet.

Hier is een test-html-pagina met koppelingen om in te schakelen/uit te schakelen via JS, vink het vakje aan of uit door het hele selectievakje uit te schakelen met innerHTML en om innerHTML voor testen te krijgen. Wanneer u de innerHTML-swap uitvoert, verandert dit feitelijk wat later door innerHTML wordt geretourneerd. Bedoel je dit? Opmerking: hmm Ik wist het tot nu toe niet maar het lijkt erop dat firefox mijn aangevinkt in checked = "checked" interessant maakt. Dus de link naar de innerHTML-weergave toont me checked = "checked" en geeft niets weer als niets is aangevinkt. Firebug laat zien dat het ook verandert, maar iets anders: van checked = "" naar niets.

Here is jsfiddle!

<input type="checkbox" name="heyhey" id="heyhey" CHECKED>

uncheck via JS
check via JS
uncheck via innerHTML swap
check via innerHTML swap
view innerHTML

Ik weet niet of ik aan al die mensen ontsnapt ben, maar werkt voor mij. Het beste om het niet inline te doen.

5
toegevoegd
Nee, ik bedoel is ... het moet de eigenlijke HTML veranderen. Als u de innerHTML van een -element wijzigt, wordt dit ook in de HTML gewijzigd. Dit is niet het geval bij checkboxes. Open dus uw HTML-inspector (FireBug of Chrome Element Inspector) en u zult zien dat het kenmerk "checked" op "yes" of "no" blijft staan ​​en dat het niet kan worden gewijzigd.
toegevoegd de auteur Lahey, de bron
Oké, zie mijn bewerking en bovenstaande code. Ik denk dat het ruilen van innerHTML dit voor elkaar krijgt, en misschien geen slecht idee als je het al gebruikt om het attribuut later te krijgen.
toegevoegd de auteur mikato, de bron

Het lijkt erop dat u een legitiem gebruik voor setAttribute() hebt in plaats van de equivalente eigenschap ( checked ). Ervan uitgaande dat u een selectievakje hebt opgeslagen in een variabele met de naam selectievakje , kunt u het volgende doen om het aangevinkte kenmerk in te stellen dat standaard moet worden aangevinkt:

checkbox.setAttribute("checked", "checked");

... en het volgende om het attribuut te verwijderen en schakel het selectievakje standaard uit:

checkbox.removeAttribute("checked");

Merk op dat dit niet goed werkt op oudere IE, die implementaties van attribuut-gerelateerde methoden heeft verbroken.

I've written about this in more detail in an answer to previous question: Add attribute 'checked' on click jquery

3
toegevoegd

Ja, het is mogelijk

checkboxObject.checked=true|false

1
toegevoegd