Avatar billede stigp Nybegynder
20. marts 2004 - 23:24 Der er 14 kommentarer og
1 løsning

Tæl antal checkboxe på id

Hej

Jeg har fundet nedenstående script et andet sted på eksperten.

Mit problem er at jeg kun vil have scriptet til at tælle de checkboxe der er checked og har id 1.

Scriptet:

<script>
function sumkryds() {
antal = 0;
for (i = 0; i < document.forms.length; i++) {
for (n = 0; n < document.forms[i].elements.length; n++)
if (document.forms[i].elements[n].type == "checkbox" && document.forms[i].elements[n].checked)
antal++;
}
str = antal + ((antal == 1) ? " checkboks" : " checkbokse") + " afkrydset.";
if (document.getElementById)
document.getElementById("antalcheck").innerHTML = str;
if (document.all)
document.all.antalcheck.innerHTML = str;
if (document.layers)
document.nsantalcheck.document.write(str);
}
</script>

Dér hvor resultatet skal fremkomme:

<div id="antalcheck"><layer id="nsantalcheck">
0 checkbokse afkrydset.
</layer></div>

Og knappen, der lægger sammen:

<form>
<input type="checkbox" id="1">
<input type="checkbox" id="1">
<input type="checkbox" id="1">
<input type="checkbox" id="1">
<input type="checkbox" id="1">
<input type="checkbox" id="1">
<p>
<input type="checkbox" id="2">
<input type="checkbox" id="2">
<input type="checkbox" id="2">
<input type="checkbox" id="2">
<input type="button" value="Tæl sammen" onClick="sumkryds();">
</form>

Håber på at få noget hjælp
Avatar billede skovenborg Nybegynder
20. marts 2004 - 23:28 #1
du må ikke have samme id på to eller flere elementer - derfor skal du ændre det til name i stedet for id.

Antal checkboxe er derefter ikke så svært at bestemme - bare skrive:
var antalbokse = document.getElementsByName("1").length;
Avatar billede skovenborg Nybegynder
20. marts 2004 - 23:31 #2
undskyld - det var kun der var checked:

function checkboxCount(navn) {
      var elms = document.getElementsByName(navn);
      var sum = 0;
      for (i=0;i<elms.length;i++) {
          if (elms[i].checked == true) {sum++;}
      }
      return sum;
  }

<form>
<input type="checkbox" name="1">
<input type="checkbox" name="1">
<input type="checkbox" name="1">
<input type="checkbox" name="1">
<input type="checkbox" name="1">
<input type="checkbox" name="1">
<p>
<input type="checkbox" name="2">
<input type="checkbox" name="2">
<input type="checkbox" name="2">
<input type="checkbox" name="2">
<input type="button" value="Tæl sammen" onClick="alert(checkboxCount(1));">
</form>
Avatar billede skovenborg Nybegynder
20. marts 2004 - 23:35 #3
...og sat sammen med din oprindelige funktion (har bare ændret sammentælningens metoden):
<script type="text/javascript">
function sumkryds(navn) {
var antal = 0;
var elms = document.getElementsByName(navn);
      var sum = 0;
      for (i=0;i<elms.length;i++) {
          if (elms[i].checked == true) {antal++;}
}
str = antal + ((antal == 1) ? " checkboks" : " checkbokse") + " afkrydset.";
if (document.getElementById)
document.getElementById("antalcheck").innerHTML = str;
if (document.all)
document.all.antalcheck.innerHTML = str;
if (document.layers)
document.nsantalcheck.document.write(str);
}
</script>

<input type="button" value="Tæl sammen" onClick="sumkryds(1);">
Avatar billede stigp Nybegynder
20. marts 2004 - 23:39 #4
Takker, det virker bare.

Smid et svar og pointene er dine
Avatar billede thesurfer Nybegynder
20. marts 2004 - 23:39 #5
hmm.. der er vist noget med, at navne på objekter *ikke* må starte med det tal..
Avatar billede thesurfer Nybegynder
20. marts 2004 - 23:40 #6
..eller hva'?
Avatar billede skovenborg Nybegynder
20. marts 2004 - 23:41 #7
thesurfer >> af ja det har du ret i (og det samme gælder med Id'er)

fra w3c's html ref:
ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").
Avatar billede roenving Novice
20. marts 2004 - 23:41 #8
Næh i html må de gerne, men det er et potentielt problem, for hverken i css eller javascript må en identifier starte med et tal, så det skal på det kraftigste frarådes !-)
Avatar billede skovenborg Nybegynder
20. marts 2004 - 23:42 #9
forresten... her er et svar ;-)
Avatar billede roenving Novice
20. marts 2004 - 23:42 #10
-- så har jeg ikke læst op på de senere anbefalinger fra w3c !-)
Avatar billede thesurfer Nybegynder
20. marts 2004 - 23:44 #11
..mit indlæg var med henblik, på brugen af JavaScript sammen med navnene :-)
Avatar billede skovenborg Nybegynder
20. marts 2004 - 23:47 #12
hmm, jeg bliver også lidt i tvivl nu... for der står godt nok at name er af typen cdata ( http://www.w3.org/TR/html4/types.html#type-cdata ). Derimod er ID af typen name og skal derfor starte med et bogstav.
Avatar billede stigp Nybegynder
20. marts 2004 - 23:49 #13
Det var kun et eksempel.. Starter med et bogstav :-)
Avatar billede thesurfer Nybegynder
20. marts 2004 - 23:51 #14
heheheh.. god ide :-)
Avatar billede skovenborg Nybegynder
20. marts 2004 - 23:51 #15
ja, så kan det vel være lige meget - bare rart at vide.

forresten: tak for point :-)
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

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