Avatar billede sp Nybegynder
27. februar 2002 - 21:26 Der er 30 kommentarer og
1 løsning

document.layers[layername].visibility i Netscape 4.7??

Hej.

Er der mon nogen ekspert herinde, der har løsningen på mit problem?

Det er selvfølgelig Netscap 4.7 det ikke virker i. IE og Mozilla, virker det fint i.

Jeg har kigget på hvad det hedder i NS.
Når man arbejder med lag, så hedder det enten document.layernavn eller document.layers[layernavn]

Og visibility kan have værdien 'hidden' eller 'visible' i IE, Mozilla og NS6, men i NS4 hedder det 'show' og 'hide'

Problemet er nu at jeg v.h.a. af ASP laver et bestemt antal lag (div) med et id. Jeg kalder så en løkke med counts parameteret, som sørger for at løkken fortsætter og laver id v.h.a. i som bruges i løkken.
Det virker altså fint i IE og Mozilla/Netscape 6, men ikke i Netscape 4.7.
For NS 4.7 har jeg prøvet at skrive:
document.todayobject+i der gav en fejlmelding ("lag has no proberties")
Og nu har jeg prøvet med document.layers['todayobject'+i]. - Det giver ingen fejlmeddelelse, men browseren "går ned":-|
Se nedenstående

M.v.h.
Søren Peter



<script language="JavaScript" type="text/javascript">
<!--

  function Blinker(counts){
      var IE = (document.all) ? true: false;
        var NS6 = (document.getElementById&&!document.all) ? true: false;
        var NS4 = (document.layers) ? true: false;
        var lag;
        var i;
    for (i = 0; i < counts; ++ i) {
            if(NS4) lag = document.layers['todayobject'+i];
            if(IE) lag = document.all['todayobject'+i].style;
          if(NS6) lag = document.getElementById('todayobject'+i).style;
            if (IE || NS6){
              if(lag.visibility=='visible')lag.visibility='hidden';
            else lag.visibility='visible';
          }
          if(NS4){
            document.write(lag.visibility)
                if(lag.visibility=='show')lag.visibility='hide';
            else lag.visibility='show';
          }
        }
    setTimeout('Blinker('+ counts +')',1000)
  }
//-->
</script>
Avatar billede nikolajdu Nybegynder
27. februar 2002 - 21:30 #1
Det hedder også "show/hide" i NS 4.x, men det er en gammel misforståelse at NS 4.x ikke forstår "visible/hidden".
Avatar billede nikolajdu Nybegynder
27. februar 2002 - 21:32 #2
Dog vil NS 4.x vældigt gerne have at man bruge name - Så brug både name og ID :))

<div name="todayobject" id="todayobject"
Avatar billede sp Nybegynder
27. februar 2002 - 21:41 #3
Nåh ok, så ser funktionen således ud:

  function Blinker(counts){
    var IE = (document.all) ? true: false;
    var NS6 = (document.getElementById&&!document.all) ? true: false;
    var NS4 = (document.layers) ? true: false;
    var lag;
    var i;
    for (i = 0; i < counts; ++ i) {
    if(NS4) lag = document.layers['todayobject'+i];
    if(IE) lag = document.all['todayobject'+i].style;
      if(NS6) lag = document.getElementById('todayobject'+i).style;
    if(lag.visibility=='visible')lag.visibility='hidden';
      else lag.visibility='visible';
    }
    setTimeout('Blinker('+ counts +')',1000)
  }

Den blinker stadig ikke i NS.
Avatar billede sp Nybegynder
27. februar 2002 - 21:41 #4
Jeg har tilføjet name til div'erne
Avatar billede nikolajdu Nybegynder
27. februar 2002 - 21:44 #5
Her er mit bud.

<html>
<head>
    <title>Untitled</title>
   
    <script language="JavaScript" type="text/javascript">
<!--

  function Blinker(counts){
    NS4 = (document.layers)? true:false
    IE4 = (document.all)? true:false
    IE5 = (document.getElementById)? true:false
    NS6 = (document.getElementById && !document.all)?true:false;
   
    for (i = 0; i < counts; ++ i) {
    var lag = (NS4)? document.layers['todayobject'+i] : (IE4)? document.all['todayobject'+i].style : document.getElementById('todayobject'+i).style;
        if(lag.visibility=='visible'){
        lag.visibility='hidden';
        }else{lag.visibility='visible';
        }
    }
    setTimeout('Blinker('+ counts +')',1000)
  }
//-->
</script>
   
</head>

<body onload="Blinker(1)">
<div name="todayobject" id="todayobject">ksaøødælasd</div>

</body>
</html>

/Nikolaj
Avatar billede Slettet bruger
27. februar 2002 - 21:45 #6
Husker du at sætte style="position: absolute;" på <div> tagget?

Hvis dit lag ligger inde i et andet lag, skal NS4.x have den ekstra reference med, eks.:
HTML:
<div id="container" style="position: absolute;">
  <div id="todaylayer" style="position: absolute;">
    ...
  </div>
</div>

JS:
document.layers["container"].document.layers["todaylayer"].visibility = "hide";

/CS
Avatar billede nikolajdu Nybegynder
27. februar 2002 - 21:45 #7
Læg lige mærke til at jeg starter funktionen med counts = 1 i onload - Går ud fra du selv har styr på hvad count reelt er :))

/Nikolaj
Avatar billede sp Nybegynder
27. februar 2002 - 21:57 #8
Ok, jeg kan stadig ikke få den til at blinke, men jeg har opdaget at hvis jeg vil styre et andet lag, så er det nok at give det et id og så bruge show/hide. Ellers kan man også give det et navn (name), men så SKAL der stå hidden/visibility for at virke i NS. Så hvis man navngiver den, sparer man noget af javascriptet:-)
Avatar billede sp Nybegynder
27. februar 2002 - 21:58 #9
Hov nu kom der lige 2 svar, jeg skulle prøve
Avatar billede sp Nybegynder
27. februar 2002 - 22:05 #10
Den ligger ikke inde i et lag. Der ligger kun et lag på siden.
Det må som sagt være løkken, den ikke kan finde ud af, som de andre 2 også kan. Det står der også øverst.
Det virker fint med et lag som blinker, hvis man ikke laver en løkke, men jeg skal bruge det til flere lag!!!
Avatar billede sp Nybegynder
27. februar 2002 - 22:07 #11
Altså NS kan ikke finde ud af løkken, men det kan Mozilla og IE godt!
Avatar billede nikolajdu Nybegynder
27. februar 2002 - 22:09 #12
Giver den nogen fejl??
Avatar billede sp Nybegynder
27. februar 2002 - 22:18 #13
hvis løkken er problemet, kan det være at det kun kommer til at virke hvis jeg v.h.a. ASP udskriver sciptet et antal gange?
Avatar billede sp Nybegynder
27. februar 2002 - 22:20 #14
Nej det gør den ikke.
Men hvsi jeg prøver at skrive:
        document.write(lag.visibility), skriver den
"Blinker is not defined."
Avatar billede nikolajdu Nybegynder
27. februar 2002 - 22:22 #15
Selvfølgelig skal det virke med løkken :))
Avatar billede sp Nybegynder
27. februar 2002 - 22:23 #16
Ja
Avatar billede sp Nybegynder
27. februar 2002 - 22:23 #17
Det virker uden løkken i NS4.7 ved et enkelt lag!
Avatar billede sp Nybegynder
27. februar 2002 - 22:32 #18
Jeg tog fejl.
Den kommer med en fejlmelding hvis jeg slår løkken fra, ved et lag.

    var IE = (document.all) ? true: false;
        var NS6 = (document.getElementById&&!document.all) ? true: false;
        var NS4 = (document.layers) ? true: false;
        var lag;
        var i;
    //for (i = 0; i < counts; ++ i) {
            i = 1;
            if(NS4) lag = document.layers['todayobject'+i];
            if(IE) lag = document.all['todayobject'+i].style;
          if(NS6) lag = document.getElementById('todayobject'+i).style;
          if(lag.visibility=='visible')lag.visibility='hidden';
          else lag.visibility='visible';
          //}
        setTimeout('Blinker()',1000)
  }
Avatar billede sp Nybegynder
27. februar 2002 - 22:33 #19
fejlmelding: lag has no properties.
Avatar billede nikolajdu Nybegynder
27. februar 2002 - 22:35 #20
Prøv med:

document.layers['todayobject'+i].document;
Avatar billede sp Nybegynder
27. februar 2002 - 22:42 #21
Hov. nu var det mig der skrev i=1, så jeg lavede selv fejlmeldingen.
Den hedder jo "0"
Så nu virker den i IE ved at ændre det til i =0
Avatar billede sp Nybegynder
27. februar 2002 - 22:43 #22
I NS4.7 siger den "document done", men den blinker ikke
Avatar billede sp Nybegynder
27. februar 2002 - 22:45 #23
Mystisk.
Det hjalp, da jeg skrev : 

if(lag.visibility=='visible'||lag.visibility=='show')lag.visibility='hidden';
          else lag.visibility='visible'
Avatar billede nikolajdu Nybegynder
27. februar 2002 - 22:45 #24
skummelt. Kan desværre ikke rigtigt tjekke det af i NS 4.x lige nu, for jeg er igang med en Download som ikke skal afbrydes og er nødt til at genstarte til win 98 hvor min NS 4.73 ligger på.
Avatar billede sp Nybegynder
27. februar 2002 - 22:47 #25
ok
Avatar billede nikolajdu Nybegynder
27. februar 2002 - 22:52 #26
flot
Avatar billede sp Nybegynder
27. februar 2002 - 22:57 #27
Tak. jeg kiggede på en anden side hvor det virkede. Der havde jeg brugt show og hide
Avatar billede nikolajdu Nybegynder
27. februar 2002 - 22:59 #28
Som jeg startede med at skrive - Så er det en skrøne - Så det er ikke der hunden ligger begravet.
Avatar billede sp Nybegynder
27. februar 2002 - 22:59 #29
Den kan sagtens sætte laget til "visible" og "hidden", men man skal bruge "show" og "hide" når man skal se dens status :-/
Avatar billede sp Nybegynder
27. februar 2002 - 23:04 #30
Det kan ikke være en skrøne at man skal bruge "show" og hide" til if -sætninger når det kun virker ved det
Avatar billede sp Nybegynder
27. februar 2002 - 23:06 #31
Prøv selv at lave if sætninger. Ellers er der noget galt med min NS4.7, men det tror jeg næppe.
Desuden kører jeg NS på win2000
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