Ich hab Probleme mit dynamisch generierten Javascripten und XHTML. Obwohl das dynamisch erzeugte Menu nicht im Quelltext erscheint und als js ausgelagert ist zeigt der Mozilla mir das Menu nicht richtig an. Imdynamischen Teil hab ich dann schon nicht ganz xhtml conform stylangaben in Tags, was aber nicht anders geht denk ich , da die auch wieder dynamisch sind??
Gibt es dazu irgentwelche tollen nachschlagewerke wo was dazusteht??
Hier mal der Quelltext, wer Lust hat:
Grüße
Lotte
Inhalte stehen in einem Array auf der Html Seite:
js.Datei:
var height = 20; // height of the menu headers
var iheight = 0; // height of the menu_items
var bgc = "lightyellow" // background color of the item
var tc = "black" // text color of the item
var over_bgc = "silver";
var over_tc = "red";
var speed =1;
var timerID = "";
var N = (document.all) ? 0 : 1; //if (document.all){N=0}else{N=1}
var width = 902
var self_menu = new Array();
function write_menu()
{
smc = 0; // count the position of the self_menu
document.write("<div id='gesdiv'>");//alles umschließendes Div
mn = 0;//Topposition
mni = 1;//
start = -1;
for(i=0;i<Link.length;i++)//Array mit Einträgen
{
la = Link[i].split("|");
if (la[0] == "0")//Obermenupunkt
{
if(start == 0){//kein weiterer Punkt mehr, dann div schließen
document.write("</div>");
h = iheight; //Höhe Menu insgesamt
tmn = mn; //-h
self_menu[smc] = new Array(tmn,h,0,-2);//jeder Eintrag wieder in Array
smc++;
mn--;
}
iheight = 0;
// csmc = 0;
document.write("<div class='menu' style='top:"+mn+"px ;height:"+height+"px' id='down"+smc+"' onclick='pull_down("+smc+","+mni+")'> "+ la[1] + "</div>");
self_menu[smc] = new Array(mn,height,0,mni);//neues Array mit 4 Einträgen?
smc++;
mni++;
mn+=height;
start = 1;
}
else//Untermenupunkt
{
if(start == 1)
{
//if(N)mn+=2;
idname = "down"+smc;
topwert = mn+'px';
//alert (topwert);
//document.getElementById(idname).style.top = topwert;
document.write("<div class='item_panel' id='down"+smc+"' style='top:"+mn+"px'>");
start = 0;
}
/* document.write("<a href='"+la[2]+"'");
if (la[3] != "") document.write("target='" + la[3] + "'");*/
document.write("<div id='d"+i+"'>");
// if (N) document.write(";width:150");
ta = la[1].split("&");
document.write("<table id='tab"+i+"' border='0' class='item'><tr><td class='spalte1'>");
document.write( ta[0] + "</td><td class='spalte2'>"+ ta[1]+"</td><td class='spalte3'>"+ta[2]+"</td><td class='spalte4'>"+ ta[3]+"</td></tr></table></div>");
var tabname = "tab"+i;
iheight +=document.getElementById(tabname).offsetHeight;
// csmc++;
}//Ende else
}//Ende For
if (start == 0){//Untermenupunkt schliessen(endet mit Untermenupunkt)
document.write("</div>");
h = iheight;
tmn = mn + 5; //-h
self_menu[smc] = new Array(tmn,h,0);
name = "down" + (self_menu.length-1);
obj = document.getElementById(name);
obj.style.borderBottomColor = "black";
obj.style.borderBottomWidth = 1;
obj.style.borderBottomStyle = "solid";
}
document.write("</div>");
}
function color(obj)
{
document.getElementById(obj).style.backgroundColor = over_bgc;
document.getElementById(obj).style.color = over_tc
}
function uncolor(obj)
{
document.getElementById(obj).style.backgroundColor = bgc;
document.getElementById(obj).style.color = tc
}
function pull_down(nr,c)
{
var val=0;
if (timerID == "")
{
to = self_menu[nr+1][1]
begin = nr + 2;
if (timerID != "") clearTimeout(timerID);
if (self_menu[nr+1][2] == 0)
{
self_menu[nr+1][2] = 1;
if(nr == self_menu.length-2) {to++;}
epull_down(begin,to,0);
}
else
{
to = 0;
self_menu[nr+1][2] = 0;
name = "down"+(nr+2);
open_item = 0;
for(i=0;i<nr;i++)
{
if(self_menu[i][2] == 1)
{open_item += self_menu[i][1];
}
}
//if (N == false) {open_item-= (c*1)};
if (nr== self_menu.length-2) {val = self_menu[self_menu.length-1][1];to=-1;}
else val = parseInt(document.getElementById(name).style.top) -(open_item)-(c*height);
epull_up(begin,to,val);
}
}
//name = "down"+(nr+1);
//document.getElementById(name).style.clip = "rect(0,"+width+",100,0)";
}
function epull_down(nr,to,nowv)
{
name = "down" + (nr-1);
obj = document.getElementById(name).style.clip = "rect(0,"+width+","+(nowv+1)+",0)";
//obj = document.getElementById(name).style.clip = "rect(0,"+width+","+iheight+",0)";
for (i=nr;i<self_menu.length;i++)
{
name = "down" + i;
obj = document.getElementById(name);
parseInt(obj.style.top)+1;
}
nowv+=1;
if(nowv < to){
timerID = setTimeout("epull_down("+nr+","+to+","+nowv+")",speed);
}
else{
timerID = "";
}
}