Avatar billede prop46 Nybegynder
17. december 2003 - 13:13 Der er 10 kommentarer og
1 løsning

foldud skal ha 2 tryk??

Har følgende script som virker fint i det lange løb, men ved load af side skal linket have 2 tryk for at kickstarte!?

Er på herrens mark!!

<style>
.showit {
    display: block;
}
.hideit {
    display: none;
}
.lineit {
    display: inline;
}
</style>

<script type="text/javascript">
<!--
function findObj(theObj, theDoc) {
  var p, i, foundObj; 
  if(!theDoc) theDoc = document;
  if( (p = theObj.indexOf("?")) > 0 && parent.frames.length) {
    theDoc = parent.frames[theObj.substring(p+1)].document;
    theObj = theObj.substring(0,p);}
  if(!(foundObj = theDoc[theObj]) && theDoc.all) foundObj = theDoc.all[theObj];
  for (i=0; !foundObj && i < theDoc.forms.length; i++)
    foundObj = theDoc.forms[i][theObj];
  for(i=0; !foundObj && theDoc.layers && i < theDoc.layers.length; i++)
    foundObj = findObj(theObj,theDoc.layers[i].document);
  if(!foundObj && document.getElementById) foundObj = document.getElementById(theObj);
  return foundObj;
}

function showHideLayers() {
  var i, visStr, obj, args = showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) {
    if ((obj = findObj(args[i])) != null) {
      visStr = args[i+2];
      if (obj.style) {
        obj = obj.style;
        if(visStr == 'show') visStr = 'visible';
        else if(visStr == 'hide') visStr = 'hidden';}
      obj.visibility = visStr;}
  }
}


function skiftKlasse(){
var i,x,tB,j=0,tA=new Array(),arg=skiftKlasse.arguments;
if(document.getElementsByTagName){for(i=4;i<arg.length;i++){tB=document.getElementsByTagName(arg[i]);
  for(x=0;x<tB.length;x++){tA[j]=tB[x];j++;}}for(i=0;i<tA.length;i++){
  if(tA[i].className){if(tA[i].id==arg[1]){if(arg[0]==1){
  tA[i].className=(tA[i].className==arg[3])?arg[2]:arg[3];}else{tA[i].className=arg[2];}
  }else if(arg[0]==1 && arg[1]=='none'){if(tA[i].className==arg[2] || tA[i].className==arg[3]){
  tA[i].className=(tA[i].className==arg[3])?arg[2]:arg[3];}
  }else if(tA[i].className==arg[2]){tA[i].className=arg[3];}}}}
}
//-->
</script>

<a href="#"  onclick="skiftKlasse(1,'mn1','showit','hideit','div');skiftKlasse(1,'but1')" class="8">Navn og Adresse</a>

<div id="mn1" class="showit">bla bla</div>
Avatar billede prop46 Nybegynder
17. december 2003 - 13:15 #1
og ja.. det magler lige ') i skiftKlasse(1,'but1" .... er rettet :0)
Avatar billede Slater Ekspert
17. december 2003 - 13:29 #2
Jeg har ikke nærstuderet koden, men jeg kunne forestille mig det er den typiske fejl.

display-property der er sat i CSS, kan ikke læses af javascript, derfor virker dine if-sætninger ikke. Du er nødt til at sætte hver objects style i javascript, hvis du vil læse det.
Avatar billede roenving Novice
17. december 2003 - 13:30 #3
Smadder rart med de der (DreamWeaver ?-) funktioner, som bare er nemme at dechiffrere !-(

Generelt kan det i hvert fald siges, at det er en tåbelig idé at skifte klasse i et document, da css-fortolkeren så skal genopbygge sit DOM-træ !-)

Men ellers ser det umiddelbart ud til at grunden skal findes et andet sted !-)
Avatar billede roenving Novice
17. december 2003 - 13:37 #4
Lidt nemmere at læse:

function skiftKlasse(){
var i,x,tB,j=0,tA=new Array(),arg=skiftKlasse.arguments;
  if(document.getElementsByTagName){
    for(i=4;i<arg.length;i++){
      tB=document.getElementsByTagName(arg[i]);
      for(x=0;x<tB.length;x++){
        tA[j]=tB[x];j++;
      }
    }
    for(i=0;i<tA.length;i++){
      if(tA[i].className){
        if(tA[i].id==arg[1]){
          if(arg[0]==1){
            tA[i].className=(tA[i].className==arg[3])?arg[2]:arg[3];
          }else{
            tA[i].className=arg[2];
          }
        }else if(arg[0]==1 && arg[1]=='none'){
          if(tA[i].className==arg[2] || tA[i].className==arg[3]){
            tA[i].className=(tA[i].className==arg[3])?arg[2]:arg[3];
          }
        }else if(tA[i].className==arg[2]){
          tA[i].className=arg[3];
        }
      }
    }
  }
}

-- men i stedet for alt dette, skal du simpelthen ændre den property, f.eks:

if(elm.style.display=='none')
  elm.style.display = 'block;
else
  elm.style.display = 'none';
Avatar billede pelkjaer Nybegynder
17. december 2003 - 14:05 #5
skift klassen er nu ikke en dreamweaver funktion - og den er "mast sammen" helt med vilje :)
Avatar billede pelkjaer Nybegynder
17. december 2003 - 14:07 #6
men skift hellere direkte på elementet - det er en vi alle har været igennem :)
Avatar billede roenving Novice
17. december 2003 - 14:10 #7
Er det da en, du er mester for, Peter ?-)

-- jeg foldede den bare ud, for at kunne dechiffrere ...
Avatar billede pelkjaer Nybegynder
17. december 2003 - 14:15 #8
Nej jeg vil ikke tage "æren" for den, men pillet ved den har jeg som den står der :)
Avatar billede roenving Novice
17. december 2003 - 14:26 #9
<a href="#" onclick="elm=document.getElementById('mn1');if(elm.style.display=='none'){elm.style.display = 'block'}else{ elm.style.display = 'none'};" class="8">Navn og Adresse</a>

<div id="mn1" style="display:block;" class="showit">bla bla</div>

-- skiftKlasse(1,'but1'); vil da ikke virke, så den flyttede jeg væk !-)
Avatar billede pelkjaer Nybegynder
17. december 2003 - 14:48 #10
skiftKlasse(0,'none','hideit','showit','div');
Avatar billede prop46 Nybegynder
18. marts 2004 - 16:18 #11
Sorry... spørgsmålet har været åbent så længe. Er ikke længere relevant og slet ikke brugt.. Så Lukker :0) undskyld ulejligheden...
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