Function => innerHTML

nunja...geht...aber noch nicht richtig ,habe nur ne andere methode verwendet ,hierbei in meinen augen alles richtign gecodet ,aber er will einfach nicht aus menus[s][0] so den weret auslesen ,testet selbst:

(Anmerkung: ihr müsst des script nicht vom sinn her verstehen ,ihr msolltest mir nur sagen können ,warum der menus[s][0] nicht ausliest^^)

PHP:
 var menus = new Array("Godlike","Curby","Tim","Hans");
 var Godlike = new Array("4","test","test1","test","test3","#","#","#","#");
 var Curby = new Array("4","test","test1","test","test3","#","#","#","#");
 var Tim = new Array("4","test","test1","test","test3","#","#","#","#");
 var Hans = new Array("4","test","test1","test","test3","#","#","#","#");
 last=-1;

 document.write('<table cellspacing="3" cellpadding="0" width="100" height="1" style="border:1px solid black"><tr><td align="center"><font id="menuover">Menu</font></td></tr>');

 function ms_open(s)
 {
  x=0;
  while(x<=(menus.length)-1)
  {
  document.getElementById(menus[x]).innerHTML="<font id=\"menuover\"><a href=\"javascript:ms_open(" + x + ")\">" + menus[x] + "</a>";
  x++;
  }

  if(last==s){last=-1;}
  else
  {
   document.getElementById(menus[s]).innerHTML='<font id="menuover"><a href="javascript:ms_open(' + s + ')">' + menus[s] + '</a>' + "<br>";
   x=1;
   y=menus[s][0];
   alert(menus[s][0]);
   while(x<=menus[s][0])
   {
    document.getElementById(menus[s]).innerHTML = [document.getElementById(menus[s]).innerHTML] + '&nbsp;&nbsp;&nbsp;<font id="menu"><a href="' + menus[s][x+y] + '">' + menus[s][x] + "</a><br>";
    x++;
   }
   last=s;
  }
 }

 x=0;
 while(x<=menus.length-1)
 {
  document.write('<tr><td><div id="' + menus[x] + '"><font id="menuover"><a href="javascript:ms_open(' + x + ')">' + menus[x] + '</a></div></td></tr>');
  x++;
 }

 document.write('</table>');
 
Zuletzt bearbeitet:
Das liegt daran,dass menus[s][0] nicht existiert.
Der menus-Array ist ein eindimensionaler Array und enthält vier Wörter....mehr nicht.
Nur weil die Wörter innerhalb des menus-Array identisch mit den Namen der anderen Arrays sind,haben sie noch nicht
miteinander zu tun:

Für dein Vorhaben brauchst du einen 2-dimensionalen Array....
probiers mal so...das müsste so annähernd dem von dir Beabsichtigten entsprechen :)
Code:
<script type="text/javascript">
<!--
menus = new Array();
menus['Godlike'] 	= new Array("4","test","test1","test","test3","#","#","#","#");
menus['Curby'] 	= new Array("4","test","test1","test","test3","#","#","#","#");
menus['Tim'] 	= new Array("4","test","test1","test","test3","#","#","#","#");
menus['Hans'] 	= new Array("4","test","test1","test","test3","#","#","#","#");
last=false;
function ms_open(s)
{
if(!document.getElementById){return;}

for(var aK in menus)
  {
  document.getElementById(aK).innerHTML=
  	'<font id="menuover"><a href="javascript:ms_open(\''+aK+'\')">'+aK+'</a>';
  }
if(last==s){last=false;return;}

for(x=1;x<=menus[s][0];++x)
   {
   document.getElementById(s).innerHTML=
   	document.getElementById(s).innerHTML+
   	'<br>&nbsp;&nbsp;&nbsp;<font id="menu"><a href="'
   	+ menus[s][menus[s][0]] + '">' + menus[s][x] + '</a>';
   }
last=s;
 }

document.write('<table cellspacing="3" cellpadding="0" width="100" height="1" style="border:1px solid black">');
document.write('<tr><td align="center"><font id="menuover">Menu</font></td></tr>');
 for(var aK in menus)
 {
  document.write('<tr><td><div id="'+aK+'"><font id="menuover">');
  document.write('<a href="javascript:ms_open(\''+aK+'\')">' + aK+ '</a></div></td></tr>');
 }
 document.write('</table>');
 //-->
 </script>
 
Ich hab' mir das Script mal näher angeschaut und etwas umgeschrieben.
Deswegen erstmal ein paar Hinweise:

Du hast die Namen der Unter-Arrays im menu-Array in Anführungsstrichen geschrieben.
Diese muss man aber weg lassen. Sonst erkennt der nur den String "Godlikes".

Zudem:
Wenn du so etwas wie
Code:
alert(menus[s][0]);

eingibst, gibt der nicht den Namen des Arrays, sondern den gesamten Inhalt des Objektes aus (also z. B.: "4testtest1testtest3####").
Deswegen habe ich (als hastige Notlösung) ein weiteres Array-Element erstellt, in dem der Name des Menüpunktes steht.

Die Schleife

x=0;
while(x<=(menus.length)-1)
{x++;

solltest man auch besser so schreiben:

for (x=0;x<=(menus.length)-1;x++)

Ich hab' das mal auf die Schnelle so gemacht, wie ich denke, dass du es dir so vorstellst.
Das ist aber noch sehr unsauber programmiert. Da müsstest noch einiges ändern (dient ja auch nur der Veranschaulichung:-) ).

Das Resultat sieht dann so aus:

http://www.nasicunion.de/tutor/menu.html

Das Script sieht dann folgendermaßen aus:

Code:
<html><Body><Script Language="javascript">

 
 var Godlike_Name = "Godlike";
 var Godlike_Inhalt = new Array("4","test","test1","test","test3","#","#","#","#");
 var Godlike = new Array(Godlike_Name, Godlike_Inhalt);

 var C_Name = "Curby";
 var C_Inhalt = new Array("4","test","test1","test","test3","#","#","#","#");
 var Curby = new Array(C_Name, C_Inhalt);

 var T_Name = "Tim";
 var T_Inhalt = new Array("4","test","test1","test","test3","#","#","#","#");
 var Tim = new Array(T_Name, T_Inhalt);
 
 var H_Name = "Hans";
 var H_Inhalt = new Array("4","test","test1","test","test3","#","#","#","#"); 
 var Hans = new Array(H_Name, H_Inhalt);

 var menus = new Array(Godlike,Curby,Tim,Hans);
 var last = -1;

 document.write('<table cellspacing="3" cellpadding="0" width="100" height="1" style="border:1px solid black"><tr><td align="center"><font id="menuover">Menu</font></td></tr>');

function ms_open(MenuID) {
 	for(x=0;x<=menus.length-1;x++) {
		document.getElementById(menus[x][0]).innerHTML = '<font id="menuover"><a href="javascript:ms_open(' + x + ')">' + menus[x][0] + '</a></Font>';
	}
  if(last==MenuID){last=-1;}
  else {
	 a=document.getElementById(menus[MenuID][0]).innerHTML='<font id="menuover"><a href="javascript:ms_open(' + MenuID + ')">' + menus[MenuID][0] + '</a>' + "<br>";


	for (i=0; i <= menus[MenuID][1].length; i++) {
		if (a == "") {
		a = '&nbsp;&nbsp;&nbsp;<Font ID="menuover"><A HRef="' + menus[MenuID][1][i] + '">'+menus[MenuID][1][i]+'</A></Font><BR>';
		}
		else {
		a += '&nbsp;&nbsp;&nbsp;<Font ID="menuover"><A HRef="' + menus[MenuID][1][i] + '">'+menus[MenuID][1][i]+'</A></Font><BR>';
		}
	}
	document.getElementById(menus[MenuID][0]).innerHTML = a;
	last=MenuID;
	}
}

 for(x=0;x<=menus.length-1;x++)
 {
  document.write('<tr><td><div ID="' + menus[x][0] + '"><font id="menuover"><a href="javascript:ms_open(' + x + ')">' + menus[x][0] + '</a></Font></div></td></tr>');
 }
document.write('</table>');
</script></Body></HTML>
Das häng' ich aber auch noch an.
Ich hoffe, das ist jetzt so, wie du es dir dachtest
 

Anhänge

Zuletzt bearbeitet:
Zurück