Avatar billede hp-power Nybegynder
17. juli 2008 - 07:55 Der er 10 kommentarer og
1 løsning

checkbox med billeder

hvordan laver med en checkbox så den skifter mellem forskellige billede om den er chcecket eller ikke.
Avatar billede w13 Novice
17. juli 2008 - 09:46 #1
Skal billedet være checkboxen?

Evt.:

<script type="text/javascript">
function checkImage(o1,o2){
  o2=document.getElementsByTagName(o2);
  if(o2.getAttribute("checked")){
    o1.setAttribute("src","billed1.bmp");
    o2.setAttribute("checked",true);
  }else{
    o1.setAttribute("src","billed2.bmp");
    o2.setAttribute("checked",false);
  }
}
</script>

<img src="billed1.bmp" onclick="checkImage('checkbox1')">
<input style="display:none" type="checkbox" id="checkbox1" name="checkbox1">
Avatar billede hp-power Nybegynder
17. juli 2008 - 09:55 #2
tænker på som denne på me.com
Avatar billede w13 Novice
17. juli 2008 - 10:05 #3
Ja! Præcis som min kode. :)
Avatar billede w13 Novice
17. juli 2008 - 10:06 #4
Koden skulle så være således:

<script type="text/javascript">
function checkImage(o1,o2){
  o2=document.getElementById(o2);
  if(o2.getAttribute("checked")){
    o1.setAttribute("src","billed1.bmp");
    o2.setAttribute("checked",true);
  }else{
    o1.setAttribute("src","billed2.bmp");
    o2.setAttribute("checked",false);
  }
}
</script>

<img src="billed1.bmp" onclick="checkImage(this,'checkbox1')">
<input style="display:none" type="checkbox" id="checkbox1" name="checkbox1">
Avatar billede w13 Novice
17. juli 2008 - 10:07 #5
Sådan her: =)

<script type="text/javascript">
function checkImage(o1,o2){
  o2=document.getElementById(o2);
  if(o2.getAttribute("checked")){
    o1.setAttribute("src","billed1.bmp");
    o2.setAttribute("checked",false);
  }else{
    o1.setAttribute("src","billed2.bmp");
    o2.setAttribute("checked",true);
  }
}
</script>

<img src="billed1.bmp" onclick="checkImage(this,'checkbox1')">
<input style="display:block" type="checkbox" id="checkbox1" name="checkbox1">
Avatar billede olebole Juniormester
17. juli 2008 - 14:01 #6
<ole>

w13 >> Husk, at dynamiske properties ikke må kunne aflæses med getAttribute metoden. Det gælder f.eks. 'checked'  ;o)
    if(o2.checked){

/mvh
</bole>
Avatar billede w13 Novice
17. juli 2008 - 14:15 #7
Ja, det er også rigtigt:

<script type="text/javascript">
function checkImage(o1,o2){
  o2=document.getElementById(o2);
  if(o2.checked){
    o1.setAttribute("src","billed1.bmp");
    o2.setAttribute("checked",false);
  }else{
    o1.setAttribute("src","billed2.bmp");
    o2.setAttribute("checked",true);
  }
}
</script>
Avatar billede hp-power Nybegynder
18. juli 2008 - 16:18 #8
Der ser ud til det virker den første gange men så ikke hvis man klikker den fra og til flere gange
Avatar billede w13 Novice
18. juli 2008 - 16:51 #9
Nej, jeg havde kun testet den i IE. Således:

<script type="text/javascript">
function checkImage(o1,o2){
  o2=document.getElementById(o2);
  if(o2.checked){
    o1.setAttribute("src","billed1.bmp");
    o2.setAttribute("checked",false);
    o2.removeAttribute("checked");
  }else{
    o1.setAttribute("src","billed2.bmp");
    o2.setAttribute("checked","true");
  }
}
</script>
Avatar billede olebole Juniormester
18. juli 2008 - 19:48 #10
o2.checked = true;

- men:

o2.setAttribute("checked","checked");  ;o)
Avatar billede olebole Juniormester
18. juli 2008 - 20:28 #11
Forklaring: I HTML-DOM tager vi fat i et JavaScript objekt med forskellige properties - repræsenterende HTML elementet. Hvis vi spørger på checked property'en, kan denne enten være true eller false:
  if (oElement.checked) { /* Elementet er valgt */ };

Vi kan også sætte checked property'en til enten true eller false med HTML-DOM:
    oElement.checked = false;

Med DOM metoderne set- og getAttribute tager vi fat i DOM-noden og sætter/aflæser, hvad der står skrevet i attributten i HTML koden.
Ifølge XHTML standarden kan checked attributten have én værdi: 'checked' - ifølge HTML standarden skal dens navn blot være tilstede i tagget. Er attributten til stede i tagget, skal elementet antage sin checked tilstand. Er den ikke tilstede, skal elementet antage sin normal tilstand.

Derfor giver det ikke mening at bruge:
    oElement.setAttribute("checked", "false");

Man bør i stedet bruge:
    oElement.attributes.removeNamedItem("checked");

- eller:
    oElement.removeAttribute("checked");

- eller med 'den gamle' HTML-DOM:
    oElement.checked = false;

Det er derfor IE, som opfører sig korrekt i denne situation  =)
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