Avatar billede el-prebsi Nybegynder
24. oktober 2001 - 21:49 Der er 24 kommentarer og
1 løsning

Visibility af elementer med Javascripting

Hej,

hvordan kan jeg gøre mit objekt synligt og usynligt ved hjælp af javascripting så det virker i både netscape 6 og internet explorer

[element].style.visibility = [value];  virker ikke i netscape 6

andre gode forslag???
Avatar billede nute Nybegynder
24. oktober 2001 - 21:50 #1
prøv denne:

<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
<html>
<STYLE TYPE=\"text/css\">
<!--
#divDisplay {position:absolute;left:5px;top:20px;clip:rect(0,100,20,0); background-color:#ffffff; layer-background-color:#ffffff;}
-->
</STYLE>

<SCRIPT LANGUAGE=\"JavaScript\" TYPE=\"text/javascript\">
<!--

var ns, ns6, ie;

ns  = (document.layers) ? true : false;
ns6 = (document.getElementById) ? true : false;
ie  = (document.all) ? true : false;

function changeVisibility(){
  if( ns ){
      tmpVisibility = document.layers[\"divVisibility\"].visibility;
        if( tmpVisibility == \"hide\" ){
          document.layers[\"divVisibility\"].visibility = \"show\";
        } else {
          document.layers[\"divVisibility\"].visibility = \"hide\";
        }
    } else if( ie ){
      tmpVisibility = document.all[\'divVisibility\'].style.visibility;
        if( tmpVisibility == \"hidden\" ){
          divVisibility.style.visibility = \"visible\";
        } else {
          divVisibility.style.visibility = \"hidden\";
        }
    } else if( ns6 ){
      alert( document.getElementById(\"divVisibility\").style.visibility );
    }
}

//-->
</SCRIPT>
<body>
Dette er en liten visibility test
<div name=\"divVisibility\" id=\"divVisibility\" style=\"position:relative;visibility:hidden;top:0px;left:0px;\">Test</div>
<a href=\"java script:void(changeVisibility());\">Klikk</a>
</body>
</html>


/nute
Avatar billede jakoba Nybegynder
24. oktober 2001 - 22:03 #2
hvis nutes:

    } else if( ns6 ){
      alert( document.getElementById(\"divVisibility\").style.visibility );
    }

udskiftes med:

    } else if( ns6 ){
      tmpVisibility = document.getElementById(\"divVisibility\").style.visibility;
        if( tmpVisibility == \"hidden\" ){
          document.getElementById(\"divVisibility\").style.visibility = \"visible\";
        } else {
          document.getElementById(\"divVisibility\").style.visibility = \"hidden\";
        }
    }

virker det fint i min NS6.

mvh JakobA
Avatar billede el-prebsi Nybegynder
24. oktober 2001 - 22:04 #3
nute:
Ja, den kode er vist fra builder.dk - har i hvert fald set den.. Den virker ikke i ns6

/Preben
Avatar billede nute Nybegynder
24. oktober 2001 - 22:07 #4
jakoba >> hehe...det var en gammel \"debug versjon\" som tydeligvis havnet på feil sted :) Takk for korreksjonen

el-prebsi >> nææ...du har gjerne sett den på builder, men den er \"nute\'sk\" :-) Jeg har nok gjerne postet den der inne, uheldigvis med samme feil som i denne posting. Hvis du gjør som jakoba skriver, så fungerer det

/nute
Avatar billede el-prebsi Nybegynder
24. oktober 2001 - 22:07 #5
Ja, det er rigtigt jakoba der skal kodes en del mere når den skal virke i netscape 6 også. Det jeg er ude efter er en kode der påvirker stylesheetet og som virker i alle browsere...

Den metode i bruger her er måske udmærket, men jo ikke lige så optimal, da jeg har en del elementer der skal vises og skjules hver gang, så bliver det en længere kodning...
Iøvrigt er metoden her ældgammel, brugte den i et projekt for 2 år siden!!!
Avatar billede nute Nybegynder
24. oktober 2001 - 22:15 #6
hmmmm....nå er jeg ikke helt sikker på hva du eksakt er ute etter. Mitt svar er faktisk det korrekte svar på ditt spørsmål.

Generelt skal layerstyles i ulike browsere manipuleres på følgende måte:

NS4:
document.layers[\"ditt layer\"].{css}
IE4:
document.all[\"ditt layer\"].style.{css}
IE5+, NS6:
document.getElementById(\"ditt layer\").style.{css}

Hvis du har endel elementer, så kan du jo bare modifisere koden litt:

<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
<html>
<STYLE TYPE=\"text/css\">
<!--
#divDisplay {position:absolute;left:5px;top:20px;clip:rect(0,100,20,0); background-color:#ffffff; layer-background-color:#ffffff;}
-->
</STYLE>

<SCRIPT LANGUAGE=\"JavaScript\" TYPE=\"text/javascript\">
<!--

var ns, ns6, ie;

ns  = (document.layers) ? true : false;
ns6 = (document.getElementById) ? true : false;
ie  = (document.all) ? true : false;

function changeVisibility( layer ){
  if( ns ){
      tmpVisibility = document.layers[layer].visibility;
        if( tmpVisibility == \"hide\" ){
          document.layers[layer].visibility = \"show\";
        } else {
          document.layers[layer].visibility = \"hide\";
        }
    } else if( ie ){
      tmpVisibility = document.all[layer].style.visibility;
        if( tmpVisibility == \"hidden\" ){
          divVisibility.style.visibility = \"visible\";
        } else {
          divVisibility.style.visibility = \"hidden\";
        }
    } else if( ns6 ){
      tmpVisibility = document.getElementById(layer).style.visibility;
        if( tmpVisibility == \"hidden\" ){
          document.getElementById(layer).style.visibility = \"visible\";
        } else {
          document.getElementById(layer).style.visibility = \"hidden\";
        }
   
    }
}

//-->
</SCRIPT>
<body>
Dette er en liten visibility test
<div name=\"divVisibility\" id=\"divVisibility\" style=\"position:relative;visibility:hidden;top:0px;left:0px;\">Test</div>
<a href=\"java script:void(changeVisibility(\'divVisibility\'));\">Klikk</a>
</body>
</html>

/nute

Avatar billede jakoba Nybegynder
24. oktober 2001 - 22:48 #7
eller i dansteinman stil:
http://www.jakoba.dk/eksperten/exp125183.html
ok i NS4, IE og NS6:

mvh JakobA
Avatar billede olebole Juniormester
25. oktober 2001 - 03:27 #8
<ole>
Du tænker sikkert på noget:
  document.styleSheets[0].removeRule[0];
  document.styleSheets[0].addRule(\"span\", \"visibility:hidden\", 0);
Den refresher blot ikke siden, så du skal skifte elementernes indhold ud med sig selv, for at få virkningen til at blive synlig.

En anden ting er, at det at manipulere stylesheets og classes, er yderst tungt og CPU-krævende.

En tredie ting er, at du aldrig får det til at virke i NS4.X

Den løsning, du har fået, er så afgjort den mest optimale du kan finde - uagtet, du finder den \'ældgammel\' med sine 2 år (gad vide, hvad han ville kalde os, hvis han kendte vores alder, Jakob?) =o)
Du kan jo blot give de elementer, du vil manipulere en letgenkendelig id ....id=\"karlbent1\", id=\"karlbent2\", osv. Så kan du iterere dig gennem dine elementer og gemme eller vise dem, du vil have manipuleret.
/mvh
</bole>
Avatar billede nute Nybegynder
25. oktober 2001 - 09:50 #9
olebole > er det ikke en klok mann en gang som sa \"de gamle er alltid eldst\" ? Eller er det er uttrykk man kun bruker i norge ?

;-)
Avatar billede olebole Juniormester
25. oktober 2001 - 10:44 #10
Det må være et norsk ordsprog ....logikken lyder norsk - men det er vel grundlæggende ikke så forskelligt i andre lande!  ;oD
Avatar billede nikolajdu Nybegynder
25. oktober 2001 - 16:27 #11
Jeg ville gøre det fuldstændigt ligesom nute - Det virker i NS4, NS6, IE4, IE5,IE5.5,IE60

Nute - Er det ikke sådan her? \"den gamle er altid kommenterende??\"

<html>
<head>
    <title></title>     
<script language=\"javascript\">   
ns4 = (document.layers)? true:false
ie4 = (document.all)? true:false
ie5 =(document.getElementById)? true:false
ns6 = (document.getElementById && !document.all)?true:false;

function over(id){
if (ns4){
document.layers[id].visibility = \"show\"
}else if (ns6) {
document.getElementById(id).style.visibility = \"visible\";
} else if (ie5) {
document.getElementById(id).style.visibility = \"visible\";
}else if (ie4) {
document.all[id].style.visibility = \"visible\";
    } 
}

function ud(id){
if (ns4){
document.layers[id].visibility = \"hide\"
}else if (ns6) {
document.getElementById(id).style.visibility = \"hidden\";
} else if (ie5) {
document.getElementById(id).style.visibility = \"hidden\";
}else if (ie4) {
document.all[id].style.visibility = \"hidden\";
    } 
}

</script>
</head>

<body>
<a href=\"#\" onMouseover=\"over(\'lag\')\" onMouseout=\"ud(\'lag\')\">kuk</a>

<div id=\"lag\" name=\"lag\" style=\"position: absolute; left:50; top:50; width: 200; height:100; z-index: 3; visibility: hidden\">Denne tekst vises n&aring;r der klikkes</div>

</body>
</html>
Avatar billede nute Nybegynder
25. oktober 2001 - 16:29 #12
nikolajdu >> så skal jeg aldri få lov å kommentere ???

;-)
Avatar billede nikolajdu Nybegynder
25. oktober 2001 - 16:32 #13
Det var ham Mac Manden jeg tænkte på. Ham du ved med dagens dummeste grin og tendense til for tiden at skrive \"såååå deeeeeet\" ;-)
Avatar billede nute Nybegynder
25. oktober 2001 - 16:34 #14
hehe... :-)
Avatar billede jakoba Nybegynder
25. oktober 2001 - 16:35 #15
Jeg kan kun gå ind for at personer under 50 lærer ikke at udtale sig medmindre de virkelig har noget at skulle have sagt :-))

mvh JakobA
Avatar billede nute Nybegynder
25. oktober 2001 - 16:37 #16
jakoba >> så skal jeg herved ikke lenger uttale meg, men kun presentere harde fakta ;-)
Avatar billede nikolajdu Nybegynder
25. oktober 2001 - 16:47 #17
Med stor frygt for senere at blive hængt op af ham den grumme Mac mand - er min mund for fremtiden lukket med syv sejl.
Avatar billede olebole Juniormester
25. oktober 2001 - 16:55 #18
Damned.........fire års tavsh......  :(
Avatar billede nikolajdu Nybegynder
25. oktober 2001 - 16:58 #19
20 år i kloster....
Avatar billede el-prebsi Nybegynder
25. oktober 2001 - 17:44 #20
OKi thanx
Jeg holder mig til nute\'s gamle version og nikolajdus \' forklaring. Og dit link Jakoba - det ser faktisk lidt smart ud :-)

Tak for hjælpen - og inden for IT er 2 år vel også gammelt - hehe
Avatar billede olebole Juniormester
25. oktober 2001 - 17:46 #21
Vær glad for, der stadig er fire år til jeg må kommentere den!  *ROTFL*
Avatar billede olebole Juniormester
25. oktober 2001 - 17:47 #22
....så deeeeeeeeeeet..........  =oD
Avatar billede el-prebsi Nybegynder
25. oktober 2001 - 18:05 #23
såååå deeeeeeeeeeeeet mener du
for to år siden var det jo for vildt fedt at have 400MHz computere (det er sådan ca. 1,6GHz siden)
Avatar billede olebole Juniormester
25. oktober 2001 - 18:10 #24
For to år siden var det max overfedt at have en Mac ....det er det stadig - så deeeeeeeeeeeeet......  =oD
Avatar billede el-prebsi Nybegynder
25. oktober 2001 - 18:16 #25
en mac er for sej

har overvejet en mac som min næste comp. - især nu hvor deres G5 snart er på banen - weeha!!!
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