Struppi: Startmenü leidet an Kinderkrankheiten

Beitrag lesen

tut mir leid, ich hab mir das ganze mal angeguckt, aber das Skript macht auf mich einen unnötig komplizierten Eindruck,

Was an welchen stellen? Was kann, da es unnötig ist, verbessert werden?

Daum müßte man das ganze nachvollziehen können, was aber aus den geannten Gründen nicht einfach ist.

auch der Einsatz von kryptischen globalen Variabelnamen macht es nicht einfacher und das dann irgendwas noch dynamisch zur Laufzeit nachgeladen wird, läßt mich jetzt die Lust verlieren zu verstehen was du da genau machst.

Kryptisch wird es erst, wenn der Fehler gefunden ist und die wiederkehrenden Definitionen den platzsparenden Schleifen gewichen sind, aber ich seh schon... keine Lust; Danke trotzdem!

Wie gesagt, die einzige Möglichkeit wäre, wenn ich mir da sSkript runterladen und schrittweise durchgehen würde, aber das hieße, dass ich es quasi komplett schreiben würde, dazu müßte mich der Ansatz reizen, das tut es aber im Moment nicht.

Das einzige was mir trotzdem aufgefallen ist:

if(y[y.length-2]=='Ich')
        {
...

Innerhalb dieser if-Anweisung wird kein einziges Element aus dem Document ausgehängt, es werden nicht mal welche eingehängt. Es werden Variablen definiert. Wie kommst Du auf den Gedanken, hier könnte ein Grund für die offensichtliche Fehlfunktion liegen?

Ich hatte mal eine alert eingebaut und der wird immer aufegerufen sobald die zweite Ebenen offen ist.

Das folgende sind die Zeilen nach der Bedingung:

td=document.createElement("td");
  t=document.createTextNode('Anlegen');
  td.appendChild(t)
  tr=document.createElement("tr");
  tr.appendChild(td)
  td=document.createElement("td");
  tr.appendChild(td)
  tr.onmouseover=function(){color(tr)}
  table.appendChild(tr)
  if(y[0]!='Ich')
   {
   td=document.createElement("td");
   t=document.createTextNode('Löschen');
   td.appendChild(t)
   tr=document.createElement("tr");
   tr.appendChild(td)
   td=document.createElement("td");
   tr.appendChild(td)
   tr.onmouseover=function(){color(tr)}
   table.appendChild(tr)

td=document.createElement("td");
   t=document.createTextNode('Verschieben');
   td.appendChild(t)
   tr=document.createElement("tr");
   tr.appendChild(td)
   td=document.createElement("td");
   tr.appendChild(td)
   tr.onmouseover=function(){color(tr)}
   table.appendChild(tr)

td=document.createElement("td");
   t=document.createTextNode('Aktionen');
   td.appendChild(t)
   tr=document.createElement("tr");
   tr.appendChild(td)
   td=document.createElement("td");
   tr.appendChild(td)
   tr.onmouseover=function(){color(tr)}
   table.appendChild(tr)
   }

Da wird nichts eingehängt?
sieht für mich so aus, als ob hier das von dir nicht gewünschte untermenü erzeugt wird.

Die Bedingung ist sowohl bei 'eddi' als auch bei 'anlegen' wahr und nachfolgend erscheint das Untermenü, bei beiden Punkten.

Jain. Es erscheint teilweise. Das hatte ich aber in den Kommentaren zu einzelen Zeilen geschrieben. Dies ist nur vorläufig eingeschoben. Deine Schlußfolgerung ist korrekt und im übrigen auch gewollt.

und das ist was du ja nicht willst,

Wo steht, das ich das nicht will?

Du willst es nur beim Punkt 'eddi' haben aber nicht bei 'anlegen' oder hab ich das falsch verstanden?

insofern musst du die Bedingung verfeinern, wobei ich aber sicher bin, man könnte das ganze wesentlich eleganter lösen.

Ich bitte um jeden Tip! Was ist wie eleganter zu lösen?

das du die Kindermenüs abhängig von den Elternpunkten machst und nicht jedesmal die ganze Tabele durchläufst. (wobei ich aber zugegebenerweise nciht sehe ob das nicht schon der Fall ist, aber es sieht zumindest für mich nicht so aus)

Ich möchte, daß Untermenüs nur dann im Baum des Startmenüs eingehangen sind, wenn ein hover auf eine Tabellenzelle stattfindet und das Untermenü Nachfahre des Elternelements dieser Tablellenzelle ist.

Dazu musst du lediglich eine verkette Liste machen, wo bei einem over das Kind gezeigt wird und bei einem out wieder weggemacht wird.

Struppi.