Avatar billede -zonic- Nybegynder
02. maj 2008 - 14:57 Der er 14 kommentarer og
1 løsning

vis indhold ved checked radiobuttons virker ikke i firefox?

hej,

jeg har et script der viser noget ekstra indhold ved radiobuttons når de bliver checked, men har lige opdaget at det kun virker i internet explorer og ikke firefox..

nogen der kan rette den til så den virker crossbrowser? :)

<script language="javascript" type="text/javascript">
function VisSkjul(felt)
{
  var list = document.getElementById('radioknapper').children;
  var i;
  var j = 0;
  var e;

  for (i = 0; i <= list.length - 1; i++)
  {
    if (list[i].tagName == 'INPUT')
    {
      j++;
      e = document.getElementById("span" + j);

      if (felt.value == j)
      {
        e.style.display = 'block';
      }
      else
      {
        e.style.display = 'none';
      }
    }
  }
}
</script>
Avatar billede -zonic- Nybegynder
02. maj 2008 - 15:05 #1
i øvrigt er koden bygget op således.:

<span id="radioknapper">
                <input type="radio" name="afdeling" value="1" onClick="VisSkjul(this);" <? if($row["afdeling"] == 1) { echo ' checked="checked"'; } ?>>Ungdom<br />
                <input type="radio" name="afdeling" value="2" onClick="VisSkjul(this);" <? if($row["afdeling"] == 2) { echo ' checked="checked"'; } ?>>Turnering<br />
                <input type="radio" name="afdeling" value="3" onClick="VisSkjul(this);" <? if($row["afdeling"] == 3) { echo ' checked="checked"'; } ?>>Motion<br />
            </span>
            <span id="span1" style="display: <? if($row["afdeling"] == 1) { echo '';} else { echo 'none'; } ?>;"></span>
            <span id="span2" style="display: <? if($row["afdeling"] == 2) { echo '';} else { echo 'none'; } ?>;">Du er i øjeblikket registreret som Turneringsspiller</span>
            <span id="span3" style="display: <? if($row["afdeling"] == 3) { echo '';} else { echo 'none'; } ?>;">Du er i øjeblikket registreret som Motionist</span>
Avatar billede w13 Novice
02. maj 2008 - 16:14 #2
Den er vel gal her:

if (list[i].tagName == 'INPUT')

Hvis FireFox fortolker tagName som "input", dvs. med små bogstaver, er du på den.

Brug i stedet:

if (list[i].tagName.toLowerCase() == 'input')
Avatar billede w13 Novice
02. maj 2008 - 16:18 #3
Og din kode kan blive lidt kortere:

<script language="javascript" type="text/javascript">
function VisSkjul(o){
  var list=document.getElementById("radioknapper").childNodes;
  for(var i=j=0;i<=list.length-1;i++){
    if(list[i].tagName.toLowerCase()=="input"){
      j++;
      document.getElementById("span"+j).style.display=(felt.value==j?"block":"none");
    }
  }
}
</script>
Avatar billede w13 Novice
02. maj 2008 - 16:18 #4
Bemærk også, at jeg her bruger childNodes i stedet for children. Mener at children kun virker i IE.
Avatar billede olebole Juniormester
02. maj 2008 - 18:00 #5
<ole>

var oOpenSpan = null;
function VisSkjul(felt) {
    if (oOpenSpan) oOpenSpan.style.display = "none";
    oOpenSpan = document.getElementById("span" + felt.value);
    oOpenSpan.style.display = "block";
}

/mvh
</bole>
Avatar billede -zonic- Nybegynder
03. maj 2008 - 21:05 #6
oleboles eksempel virker.. w13, ved dit sker der intet :)

men kan oleboles udvides således at den laver display:none på alle andre når man laver block på den ene? for i første omgang sætter jeg jo én til at være block når siden loades, og det virker først når jeg har trykket 2 steder at den første forsvinder..
Avatar billede olebole Juniormester
03. maj 2008 - 21:43 #7
window.onload = function(){
    oOpenSpan = document.getElementById("denDerErValgtsID");
}
Avatar billede olebole Juniormester
03. maj 2008 - 21:48 #8
- eller undlad at sætte noget til 'display:block' og skriv så:

window.onload = function(){
    VisSkjul( {value:1} ); // Vis 'span1'
}
Avatar billede w13 Novice
04. maj 2008 - 12:25 #9
-zonic->> Nej, nu kan jeg også se på Oleboles svar, at jeg misforstod lidt. :)
Avatar billede -zonic- Nybegynder
05. maj 2008 - 14:49 #10
kan jeg lave en window.onload midt på min side? :)

sagen er jo den, at jeg bruger includes med header og footer, så jeg har jo ikke mit body tag på den side jeg sidder og koder?
Avatar billede w13 Novice
05. maj 2008 - 14:52 #11
Du kan sagtens lave en onload midt på siden ligesom i Oles eksempel 03/05-2008 21:48:10
Avatar billede w13 Novice
19. maj 2008 - 12:59 #12
Kommet videre?
Avatar billede -zonic- Nybegynder
21. september 2010 - 19:38 #13
smid et svar, så får I point...kan ikke engang huske hvad projektet gik ud på mere :)
Avatar billede w13 Novice
22. september 2010 - 11:17 #14
Hvis jeg har hjulpet med noget, kommer her et svar. =)
Avatar billede w13 Novice
22. september 2010 - 15:02 #15
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
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

Akademikernes A-kasse

AI Product Owner

Netcompany A/S

IT Consultant

Capgemini Danmark A/S

Open Application (Denmark)

Nextway Software A/S

Product Configuration Specialist