Avatar billede mcardle Nybegynder
14. juli 2007 - 17:22 Der er 18 kommentarer og
1 løsning

Onclick så scriptet virker.

Hej Eksperter.

Jeg har denne kode og jeg har haft brugt den før, hvor den virkede, men nu har jeg glemt hvordan jeg fik den til at virke.

//==========================================
// Check All boxes
//==========================================
function CheckAll(fmobj) {
  for (var i=0;i<fmobj.elements.length;i++) {
    var e = fmobj.elements[i];
    if ( (e.name != 'allbox') && (e.type=='checkbox') && (!e.disabled) ) {
      e.checked = fmobj.allbox.checked;
    }
  }
}

//==========================================
// Check all or uncheck all?
//==========================================
function CheckCheckAll(fmobj) {
  var TotalBoxes = 0;
  var TotalOn = 0;
  for (var i=0;i<fmobj.elements.length;i++) {
    var e = fmobj.elements[i];
    if ((e.name != 'allbox') && (e.type=='checkbox')) {
      TotalBoxes++;
      if (e.checked) {
      TotalOn++;
      }
    }
  }
  if (TotalBoxes==TotalOn) {
    fmobj.allbox.checked=true;
  }
  else {
  fmobj.allbox.checked=false;
  }
}

Jeg har en "master" checkbox, som checker alle andre checkboxe. Scriptet er nu egentlig meget simpelt, jeg kan bare ikke huske hvad jeg skal sende til scriptet og om det er nødvendigt at bruge begge to.

Håber I kan hjælpe.

//mcardle
Avatar billede kalp Novice
14. juli 2007 - 17:40 #1
hvis de lægger i en <div> så skal du sende din div til metoden. og ellers sende det objekt de nu er placeret i
Avatar billede mcardle Nybegynder
14. juli 2007 - 20:11 #2
Er det sådan her:

<div id="container">
  <input type="checkbox" name="all" onclick="CheckAll('container');" />
  <input type="checkbox" name="list" />
  <input type="checkbox" name="list" />
  <input type="checkbox" name="list" />
  <input type="checkbox" name="list" />
</div>

Og skal jeg bruge begge functioner?
Avatar billede kalp Novice
14. juli 2007 - 21:16 #3
<div id="container">
  <input type="checkbox" name="all" onclick="CheckAll(container);" />
  <input type="checkbox" name="list" />
  <input type="checkbox" name="list" />
  <input type="checkbox" name="list" />
  <input type="checkbox" name="list" />
</div>
Avatar billede kalp Novice
14. juli 2007 - 21:16 #4
vil jeg mene.. det er nemmere selv at rode med det selvfølgelig.

angående om du skal bruge begge.. så se hvad der sker hvis du kun den ene til at starte med:)
har ikke kigget på koden
Avatar billede crazysnap Seniormester
15. juli 2007 - 13:37 #5
Hej mcardle,


Hvis man kigger på javascriptet forventes der en form som input idet scriptet løber gennem alle elementerne af en form. Så hvis du propper det hele ind i en form og giver formen ind som input burde det virke fint. Et lille eksempel:


<body>
    <form id="frm" action="#">
        Check all? (this is the allbox checkbox)<input type="checkbox" name="allbox" onclick="CheckAll(frm);"/>
        <div id="container">
          <input type="checkbox" name="list"/>
          <input type="checkbox" name="list" />
          <input type="checkbox" name="list" />
          <input type="checkbox" name="list" />
          <input type="checkbox" name="list" />
        </div>
        <br />
        <input type="button" value="Check if all are checked and set allbox checkbox accordingly." onclick="CheckCheckAll(frm);" />
    </form>
</body>


Mvh.

- Snap :)
Avatar billede mclemens Nybegynder
15. juli 2007 - 13:55 #6
Den skal lægges ind i en form som Snap siger, men
jeg vil nok rette onclick'en til en af disse istedet:

onclick="CheckAll(this.form);"
onclick="CheckAll(document.frm);"
onclick="CheckAll(document.getElementById('frm'));"

onclick="CheckCheckAll(this.form);"
onclick="CheckCheckAll(document.frm);"
onclick="CheckCheckAll(document.getElementById('frm'));"

(  Vælger du / kan du bruge this.form er id eller name
på form ikke nødvendig. Hvis du har name på formen kan
du også bruge document.getElementsByName('frm')[0]  )

... Eller gøre så scriptsene tog imod
onclick="CheckCheckAll('frm');" eller onclick="CheckAll('frm');" ved at
scriptsene havde fmobj=document.getElementById(fmobj) i toppen af deres scripts.
Avatar billede kalp Novice
15. juli 2007 - 14:34 #7
Det er sørme korrekt.. kiggede som sagt ikke på koden, men kan se der bliver kaldt efter elements:)

Hvis du ikke vil have det i en form, så kan du kigge på den her kode, som jeg har lavet.

marker alt.. kopir det ind i notepad og gem det som html.



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Checkbox</title>

<script type="text/javascript">
function CheckAll(fmobj, todo) {
  var elements = new Array();
  elements = document.getElementsByName(fmobj);
  for (var i=0;i< elements.length;i++) {
    var e = elements[i]
    if (!e.disabled) {
      e.checked = todo;
    }
  }
}
</script>

</head>

<body>
<div style="border:solid">
<input name="groupOne" id="Oneone" onclick="CheckAll(this.name,this.checked);" type="checkbox" value="" />
Check all in group one
</div>
<input name="groupOne" id="Onetwo" type="checkbox" value="" />
<input name="groupOne" id="Onethree" type="checkbox" value="" />
<input name="groupOne" id="Onefour" type="checkbox" value="" />


<div style="border:solid">
<input name="groupTwo" id="Twoone" onclick="CheckAll(this.name,this.checked);" type="checkbox" value="" />
Check all in group two
</div>
<input name="groupTwo" id="Twotwo" type="checkbox" value="" />
<input name="groupTwo" id="TwoThree" type="checkbox" value="" />

</body>
</html>
Avatar billede kalp Novice
15. juli 2007 - 14:35 #8
ps. ved ikke om det virker i alle browsere, men hos mig så forbliver elementerne "checked" hvis du f.eks har gjort det også efter "refresh".
Avatar billede kalp Novice
15. juli 2007 - 14:36 #9
(sidste kommentar.. du bestemmer selvfølgelig selv navnet på id... en gruppe defineres blot i name)
Avatar billede mclemens Nybegynder
15. juli 2007 - 15:27 #10
Der bør vel ikke være grund til at
have checkboxe uden til en form ?
(Medmindre det er til noget scripting, dog ville
jeg tro der havde været noget mere kode nævnt så)


... Et eksempel kunne også lyde sådan her:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">
function CheckAll(e,s){
  s=document.getElementById(s);
  elms=s.getElementsByTagName("input");
  for(i=0;i<elms.length;i++)elms[i].checked=e.checked;
}
</script>
<style type="text/css">

</style>

</head><body>
<div id="container">
  <input type="checkbox" name="all" onclick="CheckAll(this,'container');"><br><br>
  <input type="checkbox" name="list">
  <input type="checkbox" name="list">
  <input type="checkbox" name="list">
  <input type="checkbox" name="list">
</div>
</body></html>





En forkortelse af Kalp's kan være:
<script type="text/javascript">
function CheckAll(e) {
  elms=document.getElementsByName(e.name);
  for(i=0;i<elms.length;i++)elms[i].checked=e.checked
}
</script>

<input name="groupOne" id="Oneone" onclick="CheckAll(this);" type="checkbox" value="" />

<input name="groupTwo" id="Twoone" onclick="CheckAll(this);" type="checkbox" value="" />




En udbygning af den jeg lavede så den kører på id's kan være:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">
function CheckAll(e,s){
  s=document.getElementById(s);
  elms=s.getElementsByTagName("input");
  for(i=0;i<elms.length;i++)if(elms[i].id.indexOf(e.id)==0)elms[i].checked=e.checked;
}
</script>
<style type="text/css">

</style>

</head><body>
<div id="container">
  <input type="checkbox" name="all" onclick="CheckAll(this,'container');" id="groupone"><br><br>
  <input type="checkbox" name="list">
  <input type="checkbox" name="list" id="groupone1">
  <input type="checkbox" name="list">
  <input type="checkbox" name="list" id="groupone2">
</div>
</body></html>

- Der skal starten af id være det samme som check knappen man
klikker på ... Ikke bedre end Kalp's forslag om name, medmindre
de knapper man skal have afkrydset har forskellige names.

... Hvis ovenstående skal lede hele siden igennem istedet kan der istedet bruges

<script type="text/javascript">
function CheckAll(e){
  elms=document.getElementsByTagName("input");
  for(i=0;i<elms.length;i++)if(elms[i].id.indexOf(e.id)==0)elms[i].checked=e.checked;
}
</script>

<input type="checkbox" name="all" onclick="CheckAll(this);" id="groupone">

( Og på checkboxe der skal afkrydses: Fortløbende id's, eller rettere blot
afkrydsnings checkboxens id og så noget andet bagefter da man ikke må have to ens id )
Avatar billede kalp Novice
15. juli 2007 - 15:39 #11
clemens >> jo man kan sagtens komme ud for at man ikke skal bruge en form! vi ved ikke om han programmere ASP.NET ved siden af eller hvad det skal bruges til...

der behøver man ikke nødvendigvis koble en form til en checkbox... jeg har i hvertfald ved flere tilfælde ikke skulle bruge form funktionaliteten.
Avatar billede mclemens Nybegynder
15. juli 2007 - 15:47 #12
Kalp >> Læs min parentes ;) Jeg sagde, at jeg ikke kunne se
årsagen til at bruge det uden form her - da jeg følte, at der
burde have været mere scripting nævnt såfremt det var noget, hvor
en form ikke var indblandet. Dermed ikke sagt at det aldrig er
tilfældet, netop af denne grund min parentes nedenunder :)
Avatar billede kalp Novice
15. juli 2007 - 16:09 #13
fair nok - er stadig i skim tekst mode:P
Avatar billede mcardle Nybegynder
15. juli 2007 - 18:28 #14
Tak for alle jeres indlæg, udvidelser og andre koder. Jeg ville bare have en eksempel på hvordan man brugte scriptet i en eksempel og det viste crazysnap.

Crazysnap, læg et svar.

//mcardle

P.S. Jeg skal bruge det med en form. ;o)
Avatar billede crazysnap Seniormester
15. juli 2007 - 19:35 #15
Hej mcardle,

Så kommer der da et svar herfra... :)


Mvh.

- Snap :)
Avatar billede mclemens Nybegynder
15. juli 2007 - 19:41 #16
En lille anbefaling: Brug en af dem i 15/07-2007 13:55:05
sammen med onclick'en ... ellers virker det ikke med Firefox
samt andre browsere der ikke kører med IE's kendte id hotlinking.
Avatar billede mclemens Nybegynder
15. juli 2007 - 19:41 #17
Edit: IE's name og id hotlinking (det sker jo ikke kun med id)
Avatar billede mcardle Nybegynder
15. juli 2007 - 19:44 #18
Jeps, I know... Takker alle sammen.
Avatar billede crazysnap Seniormester
15. juli 2007 - 20:07 #19
Og tak for pointene...


Held og lykke med det! :)


Mvh.

- Snap
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

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Nye kolleger søges til IT Stab i Forsvaret

European Stonecraft

Intern Navision/BC Supporter

Netcompany A/S

IT Consultant