Avatar billede moejensen Nybegynder
01. februar 2006 - 12:26 Der er 10 kommentarer og
1 løsning

tjek tjekbokse og dynamiske navne

Jeg har lige to hurtige spørgsmål:

1) kan man ikke skrive følgende:
document.sels.'+ checkboxname +'.checked

hvor checkboxname er en variabel der indeholder element navnet

2) Hvordan kan jeg nemmest tjekke om mindst en af følgende checkboxe er tjekket af:

<input type="checkbox" id="test1" name="test1" value="1">
<input type="checkbox" id="test2" name="test2" value="1">
<input type="checkbox" id="test3" name="test3" value="1">
<input type="checkbox" id="test4" name="test4" value="1">
Avatar billede olebole Juniormester
01. februar 2006 - 12:39 #1
<ole>

Du har flere muligheder for at adressere elementet. Hvis du bruger elementets name-attribut:
    document.forms["FORM_NAVN"][checkboxname].checked;
- eller:
    document.getElementsByName(checkboxname)[0].checked;

Hvis du bruger elementets id-attribute:
    document.getElementsById(checkboxname).checked;

Nu er elementernes name- og id-attributter godtnok ens i dette tilfælde - men det behøver jo absolut ikke være tilfældet  :)

/mvh
</bole>
Avatar billede roenving Novice
01. februar 2006 - 13:20 #2
F.eks.

var i = 1,chckd = false;
while(document.getElementById("test"+i)){
  chckd = chckd || document.getElementById("test"+i++).checked;
}
if(!chckd){
  //fejl, ingen er afkrydset !-)
}
Avatar billede olebole Juniormester
01. februar 2006 - 13:36 #3
Jes, ved du i øvrigt noget om E's mailsystem - eller forhenværende ditto? Jeg går ikke udfra, serveren går med turban - så det skyldes vel ikke den igangværende boycot?  :)
Avatar billede roenving Novice
01. februar 2006 - 13:41 #4
Jeg har ikke snakket med nogen af de andre, så jeg har også bare konstateret, at der ingen mail kommer (nå ja, bortset fra de totalt ubrugelige om, at der er kommet en anmeldelse !-)
Avatar billede moejensen Nybegynder
01. februar 2006 - 15:30 #5
tak for jeres svar, det var måske lidt dumt af mig at bruge test 1, 2 , 3 da det bare skulle symbolisere forskellige navne.

da jeg nu ved hvordan jeg kalder dem på navnet, så vil det komme ti lat se således ud

<input type="checkbox" id="test1" name="test" value="1">
<input type="checkbox" id="test2" name="test" value="1">
<input type="checkbox" id="test3" name="test" value="1">
<input type="checkbox" id="test4" name="test" value="1">

hvordan tjekker jeg så om der er mindst en der er tjekket
Avatar billede roenving Novice
01. februar 2006 - 15:34 #6
var c = document.FORMNAVN.test,chckd = false;
for(i=0;c.length>i;i++)
  chckd = chckd || c[i].checked;
if(!chckd){
  //fejl, ingen er afkrydset !-)
}
Avatar billede moejensen Nybegynder
01. februar 2006 - 15:56 #7
det ser ud til at virke. Nu har jeg bare denne funktion der halter:

function checkCheckbox(checkboxname) {
        if (document.getElementByName(checkboxname)[0].checked)
            document.getElementByName(checkboxname)[0].checked = false;
        else {
            document.getElementByName(checkboxname)[0].checked = true;
        }
    }

Jeg får følgende fejl:

object dosn't support the properdy og method
Avatar billede roenving Novice
01. februar 2006 - 15:58 #8
-- du mangler da et s i metoden:

getElementsByName
Avatar billede roenving Novice
01. februar 2006 - 16:00 #9
-- og så kan du gøre den en del kortere:

function checkCheckbox(checkboxname) {
  var c = document.getElementsByName(checkboxname)[0];
  c.checked = !c.checked;
}
Avatar billede moejensen Nybegynder
01. februar 2006 - 16:01 #10
tusind tak for den hurtige hjælp

det virker nu

laver du et svar
Avatar billede roenving Novice
01. februar 2006 - 16:04 #11
-- det er vel en deler !-)

Velbekomme '-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester