Avatar billede styrk Nybegynder
27. september 2007 - 20:31 Der er 7 kommentarer og
1 løsning

ie7 fejler - hjælp mig lige

Mojn.. Jeg har følgende script men når jeg kører dette så får jeg i IE:

'undefinied' null or not an objekt..

linien det drejer sig om er newlayer.visibility = "visible"

Hvad kan der være galt? (er ret sikker på det har virket fint i ie6)




<script language="javascript">
        function AreYouSure(str)
        {
          if (confirm("Er du sikker?"))
          {
              self.location = str;
          }
        }



    // show hide menu's

    var ns, ns6, ie, ie4, ie5, newlayer, currentLayer;

    ns4 = (document.layers) ? true:false;
    ie4 = (document.all) ? true:false
    ie5 = (document.getElementById) ? true:false
    ns6 = (document.getElementById && !document.all) ? true:false;

    function getLayerStyle(lyr)
    {
        if(ns4)
        {
            return document.layers[lyr];
        }
        else if(ie4){
            return document.all[lyr].style;
        }
        else if(ie5)
        {
            return document.all[lyr].style;
        }
        else if(ns6)
        {
            return document.getElementById(lyr).style;
        }
    }

    function ShowHide(layer) {
        if(currentLayer==layer) {
            Hide(layer);
            currentLayer = null;
        }
        else {
            Show(layer);
            if(currentLayer!=undefined ) {
                Hide(currentLayer);
            }
            currentLayer = layer;
        }
    }

    function Show(layer)
    {
        var newlayer = getLayerStyle(layer)

        var styleObj = (ns4)? document.layers[layer] : (ie4)? document.all[layer].style : document.getElementById(layer).style;

        newlayer.visibility = "visible";
        styleObj.display = ""
    }

    function Hide(layer)
    {
        var newlayer = getLayerStyle(layer)

        var styleObj = (ns4)? document.layers[layer] : (ie4)? document.all[layer].style : document.getElementById(layer).style;

        newlayer.visibility = "hidden";
        styleObj.display = "none"
    }
</script>
Avatar billede w13 Novice
28. september 2007 - 00:07 #1
hvad hvis du retter til:

alert(newlayer);
newlayer.visibility = "visible";

i stedet for bare:

newlayer.visibility = "visible";

Så får vi at vide, om den kan finde ud af newlayer uden visibility.
Avatar billede jhe-ting Nybegynder
28. september 2007 - 02:03 #2
// Jeg så en god browser-uafhængig måde at finde et element her:

// ref: http://www.jibbering.com/faq/faq_notes/not_browser_detect.html

var getId;
if(document.getElementById){
    getId = function(strId){
        return document.getElementById(strId);
    }
}else if(document.all){
    getId = function(strId){
        return document.all[strId];
    }
}else if(document.layers){
    getId = function(strId, cont){
      cont = cont||document.layers;
      var obj = cont[strId];
      if(!obj){ //Element not found
          for(var c=0, n=cont.length; c<n; c++){
            if((cont[c])&&  //Object at index - c.
                (cont[c].document)&& //It has a - document.
                (cont[c].document.layers)){
                obj=getId(strId,cont[c].document.layers);
                if(obj)break;
            }
          }
      }
      return obj||null;
    }
}else{
    getId = function(strId){
        return null;
    }
}

Måske kan du finde inspiration der.
Avatar billede jhe-ting Nybegynder
28. september 2007 - 02:04 #3
PS: For at inde et element skriver man så:

    var elm = getId(strId);
Avatar billede styrk Nybegynder
28. september 2007 - 12:45 #4
w13: jeg fik 'undefinied' i alert beskeden :-)

jhe-ting, tak - det virker.

Mit script er nu følgende:

    // show hide menu's
   
    var getId, newlayer, currentLayer;

    if(document.getElementById)
    {
        getId = function(strId)
        {
            return document.getElementById(strId);
        }
    }
    else if(document.all)
    {
        getId = function(strId)
        {
            return document.all[strId];
        }
    }
    else if(document.layers)
    {
        getId = function(strId, cont)
        {
            cont = cont||document.layers;
            var obj = cont[strId];
            if(!obj)
            { //Element not found
                for(var c=0, n=cont.length; c<n; c++)
                {
                    if((cont[c])&&  //Object at index - c.
                        (cont[c].document)&& //It has a - document.
                        (cont[c].document.layers)){
                        obj=getId(strId,cont[c].document.layers);
                        if(obj)break;
                }
            }
        }
        return obj||null;
    }
    }
    else
    {
        getId = function(strId)
        {
            return null;
        }
    }

    function ShowHide(layer) {
        if(currentLayer==layer) {
            Hide(layer);
            currentLayer = null;
        }
        else {
            Show(layer);
            if(currentLayer!=undefined ) {
                Hide(currentLayer);
            }
            currentLayer = layer;
        }
    }

    function Show(layer)
    {
        var newlayer = getId(layer).style;
        var styleObj = getId(layer).style;

        newlayer.visibility = "visible";
        styleObj.display = ""
    }

    function Hide(layer)
    {
        var newlayer = getId(layer).style;
        var styleObj = getId(layer).style;

        newlayer.visibility = "hidden";
        styleObj.display = "none"
    }
Avatar billede styrk Nybegynder
28. september 2007 - 12:45 #5
jhe smid et svar :-)
Avatar billede jhe-ting Nybegynder
28. september 2007 - 21:06 #6
Fint nok :o)
Avatar billede jhe-ting Nybegynder
28. september 2007 - 21:13 #7
PS:  Det er ikke længere nok at skrive:

  <script language="javascript">

i dag _bør_ det være

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

      :
        (koden kan indeholde tags og specialtegn i strenge ("") ... )
      :
 
  //--></script>
Avatar billede styrk Nybegynder
28. september 2007 - 21:22 #8
ok det har jeg nu rettet i min kode :-)
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

Politiets Efterretningstjeneste

Configuration Manager til PET's IT-afdeling

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Teknisk systemansvarlig / ingeniør inden for taktisk datalink

Netcompany A/S

Network Engineer

Netcompany A/S

Test Consultant