Avatar billede madssch Nybegynder
24. maj 2002 - 14:45 Der er 31 kommentarer og
1 løsning

Show/hide layers i NS6

Jeg har et site hvor jeg benytter show/hide layers (onMouseover).

Det virker fint i IE, men ikke i NS6. Hvis jeg i mit CSS-dokument sætter "visibility: visible" vises mine lag. men står den til "visibility: hidden" og jeg fører musen over, sker der ingenting.

Understøtter NS6 ikke show/hide layers?

Eller skal jeg finde et nyere script?

Eller noget helt tredje..?
Avatar billede nikolajdu Nybegynder
24. maj 2002 - 14:59 #1
Jamen det er jo fint du har et site. bare ærgeligt at vi andre ikke kan se hvorfor det ikke funker efter hensigten :))
Avatar billede z42cool Nybegynder
24. maj 2002 - 15:07 #2
Noget kode ville jo gøre alting noget lettere!
Avatar billede gryn Nybegynder
24. maj 2002 - 15:32 #3
NS6 driller lidt på det område. Jeg benytter
objekt.style.display = "none" til at skjule og
objekt.style.display = "inline" til at vise.



Jeg har lavet et Vis/Skjul script, som vistnok er virker de fleste steder.

<head>
<title>LinkBeskrivelse</title>

<script language="javascript" type="text/javascript">
function vis(obj){

if (document.getElementById){sabine = eval("document.getElementById('"+obj+"').style");}
else if (document.all){sabine = eval("document.all"+obj+".style");}
else {sabine = eval("document."+obj+".style");}

if (document.layers) {sabine.visibility = "show";}
else {sabine.visibility = "visible";}
    }
function skjul(obj){

if (document.getElementById){sabine = eval("document.getElementById('"+obj+"').style");}
else if (document.all){sabine = eval("document.all"+obj+".style");}
else {sabine = eval("document."+obj+".style");}

if (document.layers) {sabine.visibility = "hide";}
else {sabine.visibility = "hidden";}
    }
</script>

</head>
<body onload="skjul('grunden');skjul('rocknation');">

<a href="http://www.grunden.dk" onmouseover="vis('grunden')" onmouseout="skjul('grunden')">www.grunden.dk</a>
&nbsp;
<a href="http://www.rocknation.dk" onmouseover="vis('rocknation')" onmouseout="skjul('rocknation')">www.rocknation.dk</a>

<div id="grunden">
Her kan du finde alle mine små mærkelige venner.
</div>
<div id="rocknation">
Et samlingssted for musikinteresserede mennesker.
</div>

</body>
</html>
Avatar billede gryn Nybegynder
24. maj 2002 - 15:34 #4
hov... undskyld. forkert script. Jeg prøver igen.
Avatar billede gryn Nybegynder
24. maj 2002 - 15:37 #5
<script language="javascript" type="text/javascript">

var ns6 = (document.getElementById && !document.all)?true:false;

function vis(obj){

if (document.getElementById){sabine = eval("document.getElementById('"+obj+"').style");}
else if (document.all){sabine = eval("document.all"+obj+".style");}
else {sabine = eval("document."+obj+".style");}

if (ns6){sabine.display="";}
else {
if (document.layers) {sabine.visibility = "show";}
else {sabine.visibility = "visible";}
}
    }
function skjul(obj){

if (document.getElementById){sabine = eval("document.getElementById('"+obj+"').style");}
else if (document.all){sabine = eval("document.all"+obj+".style");}
else {sabine = eval("document."+obj+".style");}

if (ns6){sabine.display="none";}
else {
if (document.layers) {sabine.visibility = "hide";}
else {sabine.visibility = "hidden";}
}
    }
</script>
Avatar billede nikolajdu Nybegynder
24. maj 2002 - 15:43 #6
Hvis det endeligt skal være den vej, så er det her nok det bedste :)) (virker i ALLE 4.x +browsere)

<html>
<head>
    <title>Untitled</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){
var styleObj = (ns4)? document.layers[id] : (ie4)? document.all[id].style : document.getElementById(id).style;
styleObj.visibility = "visible";
}

function ud(id){
var styleObj = (ns4)? document.layers[id] : (ie4)? document.all[id].style : document.getElementById(id).style;
styleObj.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>

/Nikolaj
Avatar billede gryn Nybegynder
24. maj 2002 - 16:50 #7
Nikolajdu -> jeg tror ikke, den virker i NS6
Avatar billede kolzie Nybegynder
24. maj 2002 - 16:51 #8
What about this one?
<!--
var ns, ns6, ie;

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

function showLayer( layer ){
if( ns ){
document.layers[layer].visibility = "show";
} else if( ie ){
document.all[ layer ].style.visibility = "visible";
} else if( ns6 ){
document.getElementById(layer).style.visibility = "visible";
}
}

function hideLayer( layer ){
if( ns ){
document.layers[layer].visibility = "hidden";
} else if( ie ){
document.all[ layer ].style.visibility = "hidden";
} else if( ns6 ){
document.getElementById(layer).style.visibility = "hidden";
}
}

//-->
Avatar billede kolzie Nybegynder
24. maj 2002 - 16:53 #9
... og så lige en <style> =)
<STYLE TYPE="text/css">
#divOne {position:absolute;left:0px;top:0px;visibility:hidden;clip:rect(0,175,50
0,0); background-color:#ffffff; layer-background-color:#ffffff;}
#divTwo {position:absolute;left:0px;top:0px;visibility:hidden;clip:rect(0,175,50
0,0); background-color:#ffffff; layer-background-color:#ffffff;}
Avatar billede kolzie Nybegynder
24. maj 2002 - 16:55 #10
Jeg glemmer da noget hver gang :(, men den her og så style-koden siger næsten sig selv :)
<div name="divOne" id="divOne"><img src="billede.jpg" width="150" height="150"></div>
Avatar billede gryn Nybegynder
24. maj 2002 - 17:03 #11
kolzie -> Document.layers[] kan vist kun gripe fat i <layer> og <ilayer>-tags. se: http://developer.netscape.com/docs/manuals/communicator/jsref/doc1.htm#1113634

Desuden bruger man vistnok også "hide" i NS4+ og ikke "Hidden"
Avatar billede kolzie Nybegynder
24. maj 2002 - 17:07 #12
hmmm så vidt jeg husker bruger man også hidden i NS4+, men jeg må ærligt indrømme at andre browsere end IE ikke lige just er min styrke. Lige det med NS og IE i den kode, fik jeg lige lidt hjælp til i sin tid :)
Avatar billede nikolajdu Nybegynder
24. maj 2002 - 19:23 #13
nej nej nej. Det er en gammel og helt uforståeligt fejltagelse at NS 4 ikke forstår "hidden" - Den er ligeså glad for det som for "hide"

/Nikolaj
Avatar billede gryn Nybegynder
24. maj 2002 - 19:35 #14
ok... jeg har bare læst noget andet i et hæfte fra IDG.

Hvad så med "show"?
Avatar billede nikolajdu Nybegynder
24. maj 2002 - 20:15 #15
Fuldstændigt det samme - NS 4 forstår fint "visible" og "hide" - Hæftet har nok ikke læst Ole Boles kommentarer igennem ;-)
Avatar billede gryn Nybegynder
24. maj 2002 - 20:27 #16
mon dog :-)
Avatar billede madssch Nybegynder
27. maj 2002 - 07:47 #17
Tusind tak for de mange besvarelser! Jeg har bare stadig lidt problemer: Er de scripts som i har posted cut 'n paste?

Jeg kopierede scriptet ind i stedet for mit nuværende, men får konstant fejlen "Et objekt var ventet".

Jeg er ikke den store Java-haj, så fortæl mig venligst, om disse scripts kræver noget tilretning.

Igen, tusind tak for de posts der allerede er kommet..!  ;-)
Avatar billede nikolajdu Nybegynder
27. maj 2002 - 08:16 #18
Brut mit - DEt virker og er absolut det sikreste :)))
Avatar billede madssch Nybegynder
27. maj 2002 - 10:35 #19
Det siger vi så, men jeg får stadig objekt-fejlen. Skal jeg ændre noget i det?
Avatar billede nikolajdu Nybegynder
27. maj 2002 - 10:38 #20
Hvis du copy/paster mit herfra så SKAL det ikke give nogen fejl. Det virker fint i min IE 6, NS 4.73, NS 6.2 og Opera 5.
Avatar billede madssch Nybegynder
27. maj 2002 - 10:57 #21
Det er godt nok det her, ikke?

<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){
var styleObj = (ns4)? document.layers[id] : (ie4)? document.all[id].style : document.getElementById(id).style;
styleObj.visibility = "visible";
}

function ud(id){
var styleObj = (ns4)? document.layers[id] : (ie4)? document.all[id].style : document.getElementById(id).style;
styleObj.visibility = "hidden";
}

</script>

Den giver altså fejl...

Hvad kan det være?
Avatar billede nikolajdu Nybegynder
27. maj 2002 - 10:58 #22
Du mangler jo også det sidste....

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

Ellers må du smide din samlede kode eller endnu bedre - Et link.

/Nikolaj
Avatar billede madssch Nybegynder
27. maj 2002 - 10:59 #23
Mit link ser sådan ud:

<a href=default.asp?kategori1=kontakt onMouseover="show('kontakt_topmenu');hide('in_formfelt');"onMouseout="hide('kontakt_topmenu');">Linktekst</a>

Og så har jeg selvfølgelig defineret elementerne i CSS...
Avatar billede madssch Nybegynder
27. maj 2002 - 11:00 #24
Det er altså "over" og "ud" i stedet for "show" og "hide"..?
Avatar billede madssch Nybegynder
27. maj 2002 - 11:02 #25
Der var den!

Jeg ændrede bare funktions-navnene til dem jeg allerede havde brugt (show/hide). Nu mangler jeg bare og se, om det virker i NS6...
Avatar billede nikolajdu Nybegynder
27. maj 2002 - 11:02 #26
<a href=default.asp?kategori1=kontakt onMouseover="over('kontakt_topmenu');ud('in_formfelt');" onMouseout="ud('kontakt_topmenu');">Linktekst</a>

/Nikolaj
Avatar billede madssch Nybegynder
27. maj 2002 - 11:05 #27
Det viker i NS6. Nu er der godt nok noget andet der fucker op, men dit script virker.

Tak!

Jeg har vist nok udlover point til den der svarede - hvordan får du dem?
Avatar billede nikolajdu Nybegynder
27. maj 2002 - 11:08 #28
Du accepterer mit svar ved at vælge mig i boksen og klikke på knappen "accepter" - Anyway kan du jo stadigt bare smide koden, så vi kan finde konflikten.
Avatar billede madssch Nybegynder
27. maj 2002 - 11:13 #29
Tak for tilbudet, men jeg tror det er min NS der driller. Når jeg sætter musen over det som skal aktivere show/hide forsvinder ca. halvdelen af min side indtil jeg opdaterer vinduet igen. Det sker om og om igen...

Problemet er - tror jeg - at jeg laver en flash-detect inden jeg kommer ind på siden. Det finder at jeg HAR flash - hvilket er korrekt - men når jeg ændrer URL'en til versionen UDEN flash fucker det op. Sikkert fordi jeg faktisk HAR flash installeret...

Forstod du det?  ;-)

Jeg prøver selv at kigge på det - ellers vender jeg tilbage...

Endnu engang, tusind tak for hjælpen!

/madssch
Avatar billede nikolajdu Nybegynder
27. maj 2002 - 11:14 #30
Held og lykke :)
Avatar billede kolzie Nybegynder
28. maj 2002 - 15:51 #31
Nikolaj (weee det hedder jeg også :D )>>
Hvorfor er dit det sikreste? For mig at se, virker alle besvarelserne lige godt :) - min virker i hvert fald også, den har jeg ikke haft problemer med, siden jeg lavede den. Går ud fra at du sagde det for sjov :o)

/Kolzie - www.psptuts.tk
Avatar billede nikolajdu Nybegynder
28. maj 2002 - 15:53 #32
Ok navnebror, når det kommer til forskellen på min og din, så er det eneste egentligt at min version er lidt kortere og dermed fylder lidt mindre.

/Nikolaj
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