1

Thema: @kaplar: explorer -menu-technische frage

Hallo kaplar,

leider hatte sich in dem oben genannten Thread ein Fehler vom System eingeschlichen. Beim Versuch diesen zu beheben wurde der komplette Thread leider gelöscht ... sorry, hab keinen Ahnung was da kaputt war?

Magst Du Deine letzten Ergebnisse nochmal posten, damit der Thread evtl. hier weitergeführt werden kann (bei Bedarf).

thx
Hannes

_______________________________________________________________

/-/annes (j|g) ... http://www.jg-webdesign.de

Re: @kaplar: explorer -menu-technische frage

hi!

shit happens...

ich bin bemüht ein layer-menu zu entwickeln und habe auch schon eine möglichkeit entwickelt, wobei mir der nc6 probleme macht:

http://www.salternative.de/tests/layer_navi_sub.html

bei folgendem abschnitt habe ich noch probleme:

document.getElementById('top'+k).style.top  += werty;

ich hab immer noch kein plan wie ich das richtig umsetzen kann...

----

matho hatte mir zwischenzeitlich eine geniale alternative vorgeschlagen:

http://www.salternative.de/tests/final.html

dazu hatte ich noch eine anfrage, wie ich den zugriff auf die layer mit getelemtById steuern kann, da beim aktuellen stand mit getElementByTagName('div') gearbeitet wird und ich diesen tag aber zur weiteren verwendung im fließtext brauche.

vielleicht gibts ja mind. zum ersten punkt noch ein vorschlag!

gruß

3

Re: @kaplar: explorer -menu-technische frage

Kann das Menü dann auch verschachtelte Menüpunkte?
Also sowas wie:

</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">Punkt 1
|
-- Punkt 1.1
|
-- Punkt 1.2
    |
    -- Punkt 1.2.1[/code]</blockquote><font size="2" face="Verdana, Helvetica, sans-serif">

_______________________________________________________________

/-/annes (j|g) ... http://www.jg-webdesign.de

Re: @kaplar: explorer -menu-technische frage

das war zuerst bedingung und da hab ich mir erst recht ein abgebrochen *g

aber nein: beide möglichkeiten gehen nur in die 2. ebene.

gruß

Re: @kaplar: explorer -menu-technische frage

hi!

wäre echt schön wenn mir jmd. zeigen könnte, wie ich folgenden zugriff richtig realisiere.
ich möchte mich auf die aktuelle position beziehen und da den entsprechenden hoehenwert der auffolppenden layer je nach visibility-eigenschaft draufschlagen oder abziehen:

document.getElementById('top'+k).style.top += werty;

gruß

Re: @kaplar: explorer -menu-technische frage

ok...um das noch mal im zusammenhang zu sehen:

</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">
function get_move(j,werty,bezug) {
    for (k=0; k<submenu.length; k++){
         if (submenu[k].nr>bezug){
            if (submenu[j].opened == false){
                if (ie4){
                    document.all["top"+k].style.pixelTop -= werty;
                    document.all["submenu"+k].style.pixelTop -= werty;
                }
                if (ns4){
                    document.layers["top"+k].top += werty;
                    document.layers["submenu"+k].top += werty;
                }
                else if (dom){
                    document.getElementById('top'+k).style.top -= werty;
                    document.getElementById('submenu'+k).style.top -= werty;
                }
            }
            else if (submenu[j].opened == true){
                if (ie4){
                    document.all["top"+k].style.pixelTop += werty;
                    document.all("submenu"+k).style.pixelTop += werty;
                }
                if (ns4){
                    document.layers["top"+k].top -= werty;
                    document.layers["submenu"+k].top -= werty;
                }   
                else if (dom){       
                    document.getElementById('top'+k).style.top += werty;
                    document.getElementById('submenu'+k).style.top += werty;
                }
            }
        }   
    }
}[/code]</blockquote><font size="2" face="Verdana, Helvetica, sans-serif">so klappt das im ie und nc4.x, aber halt nicht im nc6!

gruß

7

Re: @kaplar: explorer -menu-technische frage

N'abend

bin ziemlich in Eile - ich hatte gestern bereits versucht, was zu posten, das ging, wie Du siehst, in die Hose......

Kann mich also erst nächste Woche wieder mit beschäftigen.

Hier noch mal das Ding von gestern, wg Id-Frage:

N'abend,

geht natürlich auch per Id. Ist aber irgendwie nicht
unbedingt nötig. Statt D().length schreibst Du einfach
die Anzahl der divs Deines Menus und setzt es an den Anfang -
im einfachsten Fall (damit die Zählung bei Null beginnt).
Alle nachfolgenden divs haben damit dann nix mehr zu schaffen.

Ich hab das Ding mal für beliebig tiefe Verschachtelungen
umgeschrieben:

</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;"><html>
<head>
<style>
div{position:absolute;font-Family:verdana;font-Size:13px;font-weight:bold;left:20px;visibility:hidden}
.m{background-Color:yellow;}
.s{background-Color:lightblue;}
.u{background-Color:lightgreen;}
.uu{background-Color:orange;}
a{text-decoration:none;}
</style>
<script>
var dl=document.layers,dt=document.getElementsByTagName;
var h=17;
var v=void(0);

function D(d){return D.arguments.length==0?dt?document.getElementsByTagName('div'):dl:dt?document.getElementsByTagName('div')[d].style:dl[d];};
function V(v){return D(v).visibility=='visible'

8

Re: @kaplar: explorer -menu-technische frage

NEINNNN!!! Nicht schon wieder!!!

<html>
<head>
<style>
div{position:absolute;font-Family:verdana;font-Size:13px;font-weight:bold;left:20px;visibility:hidden}
.m{background-Color:yellow;}
.s{background-Color:lightblue;}
.u{background-Color:lightgreen;}
.uu{background-Color:orange;}
a{text-decoration:none;}
</style>
<script>
var dl=document.layers,dt=document.getElementsByTagName;
var h=17;
var v=void(0);

function D(d){return D.arguments.length==0?dt?document.getElementsByTagName('div'):dl:dt?document.getElementsByTagName('div')[d].style:dl[d];};
function V(v){return D(v).visibility=='visible'||D(v).visibility=='show';};
function T(t){return dl?D(t).top:D(t).top.toString().replace(/px/,'')*1;};
function MM(m,mm){if(V(m))M(m,mm);};

function M(m,mm,ma,me)
{if(M.arguments.length==4)MM(ma,me);
  for(i=m;i<=mm;i++)
   {if(!(i>=ma&&i<=me))
    {D(i).visibility=V(i)?'hidden':'visible';
     D(i).top=T(m-1)+(i-m+1)*h;
     for(j=mm+1;j<25;j++)D(j).top=V(i)?T(j)+h:T(j)-h;
     if(i>me)D(i).top=T(i)-((me-ma)+1)*h;
    };
   };
};
</script>

</head>
<body>

</body>
<div style='top:20;visibility:visible' class=m><a href='#' onclick='M(1,8,2,7),M(v,v,2,7),M(v,v,4,5)' onfocus='this.blur()'>m 1</a></div>
<div class=s><a href='#' onclick='M(2,7,4,5),M(v,v,4,5)' onfocus='this.blur()'>m1 s1</a></div>
     <div class=u>m1 s1 u1</div>
     <div class=u><a href='#' onclick='M(4,5)' onfocus='this.blur()'>m1 s1 u2</a></div>
             <div class=uu>m1 s1 u2 uu1</div>
             <div class=uu>m1 s1 u2 uu2</div>
     <div class=u>m1 s1 u3</div>
     <div class=u>m1 s1 u4</div>
<div class=s>m1 s2</div>

<div style='top:37;visibility:visible' class=m><a href='#' onclick='M(10,15,11,13),M(v,v,13,13),M(v,v,15,15)' onfocus='this.blur()'>m 2</a></div>
<div class=s><a href='#' onclick='M(11,13,13,13),M(v,v,13,13)' onfocus='this.blur()'>m2 s1</a></div>
     <div class=u>m2 s1 u1</div>
     <div class=u><a href='#' onclick='M(13,13)' onfocus='this.blur()'>m2 s1 u2</a></div>
         <div class=uu>m2 s1 u2 uu1</div>
<div class=s><a href='#' onclick='M(15,15)' onfocus='this.blur()'>m2 s2</a></div>
     <div class=u>m2 s2 u1</div>

<div style='top:54;visibility:visible' class=m><a href='#' onclick='M(17,20)' onfocus='this.blur()'>m 3</a></div>
<div class=s>m3 s1</div>
<div class=s>m3 s2</div>
<div class=s>m3 s3</div>
<div class=s>m3 s4</div>

<div style='top:71;visibility:visible' class=m><a href='#' onclick='M(22,24)' onfocus='this.blur()'>m 4</a></div>
<div class=s class=s>m4 s1</div>
<div class=s>m4 s2</div>
<div class=s>m4 s3</div>

<div style='font-size:234;left:160;visibility:visible;'>HA!</div>
</html>

Mist, jetzt kannst Du natürlich die Einrückungen nicht sehen......

In opera kann's vorkommen (zB.opera 6.0 unter windows 2000), daß der
ein bissel muckt, wenn man zu viele Unterpunkte gleichzeitig öffnen will,
weshalb man zuvor andre wieder schliessen muß. Komischerweise ist das in
opera 6.01 unter win98 wiederum nicht der Fall.
Der NN4.5 zeigt das letzte div nicht an, weil er statt der Angabe font-Size
lieber fontSize haben möchte..... - What should I say?
Es ist nicht grade bequem zu editieren, weswegen ich mich mal an eine
Array-Lösung machen werde (wahrscheinlich per Id).
Ich hab' bloß momentan nicht allzuviel Zeit übrig, weswegen das aweng
dauern kann.
Und eigentlich kann man's auch so verwenden, wenn man nicht
jeden Tag neue Inhalte einfügen muß.

gruß

matho
 
  <small>[ 13-03-2002, 19:05: Beitrag editiert von: matho ]</small>

9

Re: @kaplar: explorer -menu-technische frage

Hm .. ist ja schräg was da passiert .. muß wohl an irgend nem Inhalt des Postings liegen, womit UBB nicht ganz zurecht kommt. Naja ... ich versuch da jetzt mal nix mehr zu reparieren ...  <img border="0" title="" alt="[Winken]" src="images/icons/wink.gif" />

_______________________________________________________________

/-/annes (j|g) ... http://www.jg-webdesign.de

10

Re: @kaplar: explorer -menu-technische frage

moin!

hey, da freu ich mich aber das das so einfach ist, aber fasse mir doch n bisschen an den kopf, dass ich das nicht gesehen habe, denn ich dachte ich hätte das halbwegs begriffen *g.

ich poste mal ein script auf das ich gegoogelt bin
, was meine angestrebte layer-lösung wirklich realisiert:

  </font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">
<script type="text/javascript">
<!--
function layer_hide(id)
{
if (document.all){document.all[id].style.display='none'}
else if (document.layers){document.layers[id].visibility='hide'}
else if (document.documentElement){document.getElementById(id).style.visibility='hidden'}
}

function layer_show(id)
{
if (document.all){document.all[id].style.display=''}
else if (document.layers){document.layers[id].visibility='show'}
else if (document.documentElement){document.getElementById(id).style.visibility=''}
}

function layer_status(id)
{
var status;
if (document.all)
    {
    if (document.all[id].style.display=='none'){status='hide'}
    else {status='show'}
    }
else if(document.layers)
    {
    if (document.layers[id].visibility=='hide'){status='hide'}
    else {status='show'}
    }
else if(document.documentElement)
    {
    if (document.getElementById(id).style.visibility=='hidden'){status='hide'}
    else {status='show'}
    }
return status;
}

function layer_height(id)
{
var status;
if (document.all)
    {status=document.all[id].offsetHeight+document.all[id].style.pixelTop;}
else if (document.layers)
    {status=document.layers[id].top+document.layers[id].clip.height;}
else if(document.documentElement)
    {status=document.getElementById(id).offsetTop+document.getElementById(id).offsetHeight;}
return status;
}

function layer_move(id,x,y)
{
if(document.all)
    {
    document.all[id].style.left=x;
    document.all[id].style.top=y;
    }
else if(document.layers)
    {
    document.layers[id].left=x;
    document.layers[id].top=y;
    }
else if(document.documentElement)
    {
    document.getElementById(id).style.left=[x+'px'];
    document.getElementById(id).style.top=[y+'px'];
    }
}

function new_position()
{
   s=menu_top;
   for (i=1; i<=menu_max; i++)
   {
     layer_show(['M'+i]);
     layer_move(['M'+i],0,s);
     s=layer_height(['M'+i])+menu_space;
     if (layer_status(['U'+i])=='show')
     {
       layer_move(['U'+i],0,s);
       s=layer_height(['U'+i])+menu_space;
     }
   }
}

function clickHandler(i)
{
if (layer_status(['U'+i])=='hide')
    {layer_show(['U'+i])}
else {layer_hide(['U'+i])}
new_position();
}

function menu_hide()
{
  for(j=1;j<=menu_max;j++)
  {
  layer_hide(['U'+j]);
  }
}

function first()
{
menu_hide();
new_position();
for(nr=1;nr<=menu_max;nr++)
    {
    layer_move(['M'+nr],0,25*(nr-1)+20)
    }
}
//-->
</script>
  [/code]</blockquote><font size="2" face="Verdana, Helvetica, sans-serif">...ist aber gut das ich doch deine lösung nehmen kann  <img border="0" title="" alt="[Lächeln]" src="images/icons/smile.gif" />

gute nacht

11

Re: @kaplar: explorer -menu-technische frage

Ok, aber achte, wie gesagt, auf die älteren NN4x.

Bin bis Montag weg, und meld mich ab.

Bis dann

gruß

matho