XaraX: Startmenü leidet an Kinderkrankheiten

Beitrag lesen

Hallo,

ist es Mums? Sinds die Windpocken? Ich habe keine Ahnung mehr woran es liegen könnte.

Zum Ablauf:                                            Betreffende Funktion:

Es wird ein durch onClick auf das Wort ein             menu()    ab Zeile 14 Menü  abgeklärt, ob das Start- menü bereis eingeblendet ist oder nicht und läd sich dynamisch erzeugte Daten in Form eines Objekts "z" von http://eddi.to-grip.de/v/01.php bzw. löscht den vohandenen Datenbestand var z Durch Laden von 01.php wird grund() aufgerufen.

Es wird Das Grundmenü erzeugt und dyna-                grund()   ab Zeile 30 misch eingehängt.

Durch onMouseover wird dabei die Hinter-               color()   ab Zeile 56 grundfarbe geändert und alle Unterme- nüs gelöscht, die nicht das selbe parentNode haben.

Durch onMouseover wird ein Untermenü dyna-             list()    ab Zeile 77 misch erzeugt und eingehängt.

============================================================================

Anzeigebeispiel http://eddi.to-grip.de/v/ <iframe src="http://eddi.to-grip.de/v/" width="90%" height="90%">http://eddi.to-grip.de/v/</iframe>

(es ist möglich, daß nur geckos etwas zu sehen bekommen)

Bei mir ist es nicht möglich durch onMouseover auf "Anlegen" die Untermenüs von "eddi" Auszuhängen.

0  : <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 1  : <html> 2  : <head> 3  : <title>Admin</title> 4  : <meta http-equiv="content-type" content="text/html;charset=ISO-8859-1"> 5  : <style type="text/css"> 6  : html,body        {padding:0;margin:0;font-family:sans-serif} 7  : table            {background:#EEE;border:2px solid #CCC} 8  : td               {padding:0px 4px 0px 4px;cursor:default} 9  : 10 : #task            {position:fixed;bottom:0px;width:100%;border:none} 11 : </style> 12 : <script type="text/javascript"> 13 : var m=new Array('Filialen','Chat','Warenwirtschaft'); 14 : function menu() 15 :         { 16 :         if(!document.getElementById("ein").getElementsByTagName("table")[0]) 17 :                 { 18 :                 delete(z); 19 :                 t=document.createElement("script"); 20 :                 t.setAttribute("src","http://eddi.to-grip.de/v/01.php"); 21 :                 t.setAttribute("type","text/javascript"); 22 :                 document.getElementsByTagName("head")[0].appendChild(t); 23 :                 } 24 :         else 25 :                 { 26 :                 document.getElementById("task").getElementsByTagName("td")[0].removeChild(document.getElementById("task").getElementsByTagName("td")[0].firstChild) 27 :                 while(document.getElementsByTagName("head")[0].getElementsByTagName("script").length!=1)        document.getElementsByTagName("head")[0].removeChild(document.getElementsByTagName("head")[0].getElementsByTagName("script")[1]); 28 :                 } 29 :         } 30 : function grund() 31 :         { 32 :         table=document.createElement("table"); 33 :         table.setAttribute("cellpadding",0); 34 :         table.setAttribute("cellspacing",0); 35 :         table.setAttribute("id","neu"); 36 :         for(m in z) 37 :                 { 38 :                 td=document.createElement("td"); 39 :                 t=document.createTextNode(m); 40 :                 td.onmouseover=function(){list(this)} 41 :                 td.appendChild(t) 42 :                 tr=document.createElement("tr"); 43 :                 tr.appendChild(td) 44 :                 td=document.createElement("td"); 45 :                 tr.appendChild(td) 46 :                 tr.onmouseover=function(){color(this)} 47 :                 table.appendChild(tr) 48 :                 } 49 :         document.getElementById("ein").appendChild(table); 50 :         s=document.getElementById("neu").style; 51 :         s.position="fixed" 52 :         s.zIndex=0; 53 :         s.bottom=document.getElementById("task").offsetHeight+"px"; 54 :         document.getElementById("neu").removeAttribute("id"); 55 :         } 56 : function color(v) 57 :         { 58 :         delete(t); 59 :         t=v.parentNode.childNodes; 60 :         for(i=0;t[i];i++) 61 :                 { 62 :                 if(t[i]!=v) 63 :                         { 64 :                         t[i].style.background='transparent'; 65 :                         t[i].onmouseover=function(){color(this)} 66 :                         while(t[i].childNodes[1]) 67 :                                 { 68 :                                 t[i].removeChild(t[i].childNodes[1]) 69 :                                 } 70 :                         td=document.createElement("td"); 71 :                         t[i].appendChild(td) 72 :                         } 73 :                 } 74 :         v.style.background="#DDD"; 75 :         v.onmouseover=''; 76 :         } 77 : function list(v) 78 :         { 79 :         v.onmouseover=''; 80 :         t=v.parentNode.parentNode.childNodes; 81 :         for(i=0;t[i];i++) 82 :                 if(t[i].firstChild!=v) 83 :                         { 84 :                         t[i].firstChild.onmouseover=function(){list(this)} 85 :                         } 86 :         y=''; 87 :         a=''; 88 :         x=v; 89 :         y=x.firstChild.nodeValue+'$$$'; 90 :         x=x.parentNode.parentNode.parentNode; 91 :         while(x.id!="ein") 92 :                 { 93 :                 y+=x.parentNode.firstChild.firstChild.nodeValue+'$$$'; 94 :                 x=x.parentNode.parentNode.parentNode; 95 :                 } 96 :         y=y.split('$$$'); 97 :         x=z; 98 :         for(i=2;i<=y.length;i++) 99 :                 { 100:                 x=x[y[y.length-i]]; 101:                 } 102:         table=document.createElement("table"); 103:         table.setAttribute("cellpadding",0); 104:         table.setAttribute("cellspacing",0); 105:         table.setAttribute("id","neu"); 106:         if(y[y.length-2]=='Ich') 107:                 { 108:                 td=document.createElement("td"); 109:                 t=document.createTextNode('Anlegen'); 110:                 td.appendChild(t) 111:                 tr=document.createElement("tr"); 112:                 tr.appendChild(td) 113:                 td=document.createElement("td"); 114:                 tr.appendChild(td) 115:                 tr.onmouseover=function(){color(this)} 116:                 table.appendChild(tr) 117:                 if(y[0]!='Ich') 118:                         { 119:                         td=document.createElement("td"); 120:                         t=document.createTextNode('Löschen'); 121:                         td.appendChild(t) 122:                         tr=document.createElement("tr"); 123:                         tr.appendChild(td) 124:                         td=document.createElement("td"); 125:                         tr.appendChild(td) 126:                         tr.onmouseover=function(){color(this)} 127:                         table.appendChild(tr) 128: 129:                         td=document.createElement("td"); 130:                         t=document.createTextNode('Verschieben'); 131:                         td.appendChild(t) 132:                         tr=document.createElement("tr"); 133:                         tr.appendChild(td) 134:                         td=document.createElement("td"); 135:                         tr.appendChild(td) 136:                         tr.onmouseover=function(){color(this)} 137:                         table.appendChild(tr) 138: 139:                         td=document.createElement("td"); 140:                         t=document.createTextNode('Aktionen'); 141:                         td.appendChild(t) 142:                         tr=document.createElement("tr"); 143:                         tr.appendChild(td) 144:                         td=document.createElement("td"); 145:                         tr.appendChild(td) 146:                         tr.onmouseover=function(){color(this)} 147:                         table.appendChild(tr) 148:                         } 149:                 } 150:         for(m in x) 151:                 { 152:                 td=document.createElement("td"); 153:                 t=document.createTextNode(m); 154:                 td.onmouseover=function(){list(this)} 155:                 td.appendChild(t) 156:                 tr=document.createElement("tr"); 157:                 tr.appendChild(td) 158:                 td=document.createElement("td"); 159:                 tr.appendChild(td) 160:                 tr.onmouseover=function(){color(this)} 161:                 table.appendChild(tr) 162:                 } 163:         if(!v.nextSibling.firstChild) 164:                 { 165:                 v.nextSibling.appendChild(table); 166:                 s=document.getElementById("neu").style; 167:                 s.position="fixed" 168:                 s.bottom=document.getElementById("task").offsetHeight+"px"; 169:                 document.getElementById("neu").removeAttribute("id"); 170:                 } 171:         } 172: </script> 173: </head> 174: <body> 175: <table cellpadding="0" cellspacing="0" id="task"> 176:  <tr>        <td colspan="2" id="ein" style="padding:0"></td></tr> 177:  <tr>        <td> 178:         <span onClick="menu()">Menü</span> 179:         </td> 180:         <td></td></tr> 181: </table> 182: </body> 183: </html>

Mir ist klar, daß 184 Zeilen Code nich wirklich schön sind durchzusehen, dallerdings sehen ich keine andere Möglichkeit. Der/die Fehler könnten überall sein... (Tut mir leid :(

Kommtentar zu einzelnen Zielen:

function grund()

Zeile 50-54    Leider habe ich es nicht hinbekommen                     das Element direkt anzusprechen (table.style).                     Daher wird eine ID zeitweilig vergeben.                     Betrifft ebenso 165-169 in list()

function color()

Zeile 69       An dieser Stelle wurde abgeprüft, ob                     removeChild() seinen Dienst tut. Das macht es.                     Allerdings wird das Untermenü immer noch an-                     gezeigt.

function list()

Zeile 79&163   So soll verhindert werden, daß nicht endlos                     viele Untermenüs eingehangen werden, sondern                     nur eins (war ein anfängliches Problem).

Zeile 89&101   Die Objektstruktur z entspricht der des Start-                     menüs und wird so rückerts rekonstruriet, um                     auf die richtigen Eigenschaften von z zuzu-                     greifen.

Zeile 106&117  vorerst eingeschoben                     Später wird dies individuell auf die einzelnen                     Hauptmenüpunkte jeweils zugeschnitten.

Warscheinlich ist es einfach nur Blindheit. Was und wie muß umgestellt werden, damit Untermenüs ausgehangen werder?

Gruß aus Berlin! eddi