Tobias: Ich verzweifle

Hallo,
ich hab immer noch nen Problem mit nem menue in Netscape 4. Hab jetzt nen andres Script genommen. Der Teil für NC4 sieht so aus.

<script language="JavaScript">
<!--
function setvisibility(divid)
{
  if (document.layers)
 { browserstyle="document."+divid;
   visible="show";
 }
if (browserstyle.visibility.toLowerCase() == visible)
   browserstyle.visibility = "hidden";
  else
   browserstyle.visibility = "visible";
}
//-->
</script>

über divid kommt ne id für den css-namen. Er kommt auch richtig an. Hab das mal mit alert ausgeben lassen. Jetzt sagt mir die JavaScript-Konsole aber: browserstyle.visibility has no properties

Wieso????

Danke für eure Antworten!

Tobias

  1. über divid kommt ne id für den css-namen. Er kommt auch richtig an. Hab das mal mit alert ausgeben lassen. Jetzt sagt mir die JavaScript-Konsole aber: browserstyle.visibility has no properties

    Wieso????

    Weil browserstyle nur ein String ist.

    Probier mal das folgende, sollte in den meisten Browsern funktionieren:

    ////////////////////////////////////////////////////////////
    // setVis
    function setVis(id, mode)
    {
        var obj = getById(id);
        if(!obj) return null;
        if(document.layers)
        {
             var vis = mode ? 'show' : 'hidden';
             obj['visibility'] = vis;
             return obj['visibility'];
        }
        var vis = mode ? 'visible' : 'hidden';
        return obj.style['visibility'] =  vis;
    }
    ///////////////////////////////////////////////////////////
    // getById(id [, win])

    function getById(id, win)
    {
        var doc = window.document;
        if(win) doc = win.document;

    if(typeof id == 'undefined') return null;

    var obj = null;
        if(document.getElementById) obj = doc.getElementById(id);
        else if(document.layers) obj = _findObj_(id, doc);
        else if(document.all) obj = doc.all[id];

    return obj;
    }
    ////////////////////////////////////////////////////////////
    // Nur für den NC 4.x um Layer zu finden.

    function _findObj_(n, doc)
    {
        if(doc[n]) return doc[n];

    for(var i = 0; i < doc.layers.length; i++)
        {
             if(typeof doc.layers[i].document != 'undefined')
             {
                  var obj = _findObj_(n, doc.layers[i].document);
                  if(obj) return obj;
             }
        }
        return null;
    }