Lomakkeella on 10 checkboxia. Klikkaan ensimmäisen checkboxin pois päältä, jolloin kaikki jälkimmäiset checkboxit (extra2-10check) tulisi myös ottaa pois päältä. Koodi ei toimi. Mikäs tässä mättää..?
function show(it, box) {
var vis = (box.checked) ? "block" : "none";
document.getElementById(it).style.display = vis;
for(i = 2; i
function show(it, box) {
var vis = (box.checked) ? "block" : "none";
document.getElementById(it).style.display = vis;
for(i = 2; i
Vastaukset 2
Vanhimmat
checkbox = document.lomakeform.extra2check;
checkbox.checked = false;
toimii,
mutta
checkbox = document.lomakeform.extra[i]check;
checkbox.checked = false;
ei toimi. Mikä for loopissa mättää?
Ongelma on siinä, että formin elementtejä ei voi käsitellä niin kuin olet tuossa ajatellut vaan ne täytyy olla joko taulukossa tai käyttää eval-funktiota. Ensimmäisessä vaihtoehdossa kaikilla elementeillä pitää olla sama nimi jolloin niihin viitattaessa koodi näkee ne taulukkona.
Muttä mikä tämä on ja mikä on extra2check?
"checkbox = document.lomakeform.extra2check;"
Tee mielummin näin (vaihtaa kaikkien tilan valituksi ja päinvastoin):
function vaihto() {
var formi = document.forms["formi"];
for(i = 0; i < formi.extra.length; i ) {
formi.extra[i].checked = !formi.extra[i].checked;
}
}
Funktion kutsu ensimmäiseen checkboxiin tai erilliseen linkkiin.
< input type="checkbox" onClick="javascript:vaihto();">, < a href="javascript:vaihto();">Vaihda tila