Ausgabe mehrdimensionales Array

Jutti

Grünschnabel
Hallo !

Baue grade eine Preisliste um und habe ein mehrdimensionales Array:
Code:
<html>
<head>
<title>Test</title>
<script type="text/javascript">
<!--
var a =new Array(4)
for (var i=0; i< a.length; ++i)
a [i]=new Array (10);
a[3][1]="Anzahl";
a[3][2]="Bestellnr.";
document.write(a[3][1]);
document.write(a[3][2]);
//-->
</script>
</head>
<body>
<table border=1>
<th>Hi</th>
<td>"document.write(a[3][1])"</td>
<td>halllo</td>
</table>
</body>
</html>


jedoch wird in der Tabelle der Wert von dem Array (a[3][1]) nicht ausgegeben. Funktionieren solche Ausgaben nur im Value von Input-Feldern oder geht das auch irgendwo ohne?

Vielen Dank schon mal
liebe Grüße
Jutti
 
Woher soll der HTML Parser denn wissen, wann eine Client Script Anweisung kommt und wann nicht? Richtig, garnicht, wenn man ihn dies nicht beibringt.

Du musst, um den Array Auszugeben in deiner Zeile <script>CODE</script> hinzufügen. Dort wo Code steht, dein Objekt document.write platzieren ;) .Dann klappt es.

In diesem Sinne
 
Danke für Deine schnelle Antwort!
Meinst Du so? ( net) hab sicher was vergessen oder nen Fehler

Code:
<html><head><title>Test</title>
</head><body>
<script type="text/javascript">
<!--
 var Mitarbeiter=new Array();

 Mitarbeiter[0] = new Array();
 Mitarbeiter[0]["Name"] ="\""+parent.frames[0].Woerter[13]+"\"";
 Mitarbeiter[0]["Vorname"] = "Hans";
 Mitarbeiter[0]["Wohnort"]= "Dresden";

 Mitarbeiter[1]=new Array()
 Mitarbeiter[1][1] = "Schulze";
 Mitarbeiter[1][2] = "Frauke";
 Mitarbeiter[1]["Wohnort"]= "Berlin";

 for (var i=0;i<Mitarbeiter.length;i++)
 {
  document.write("<dl><dt>Mitarbeiter "+(i+1)+"<\/dt>");
   for (var Eigenschaft in Mitarbeiter[i])
      document.write("<dd>"+ Eigenschaft + ": "+Mitarbeiter[i][Eigenschaft]+"<\/dd>");
  document.write("<\/dl>");
 }
//-->
</script>
<table border=1>
<th>Hallo</th>
<td><script>document.write(Mitarbeiter[1][1]</script> 
</table>
</body>
</html>
 
Warum machen nur alle immer den selben Fehler... :mad:

Platziere den JavaScript-Code im Head, nicht im Body.

Und am besten packst du alles, was ausgegeben werden soll, in eine eigene Funktion, welche du dann aufrufst (zB im Body-Tag mit onLoad=" ").

Test mal den Code, bei mir kommt eine schöne Ausgabe heraus:

Code:
<html>
 <head>
  <title>Test</title>

<script type="text/javascript">
<!--
function schreibe()
{
var Mitarbeiter=new Array();

Mitarbeiter[0] = new Array();
Mitarbeiter[0]["Vorname"] = "Hans";
Mitarbeiter[0]["Wohnort"]= "Dresden";

Mitarbeiter[1]=new Array()
Mitarbeiter[1][1] = "Schulze";
Mitarbeiter[1][2] = "Frauke";
Mitarbeiter[1]["Wohnort"]= "Berlin";

for (var i=0;i<Mitarbeiter.length;i++)
 {
 document.write("<dl><dt>Mitarbeiter "+(i+1)+"<\/dt>");
 for (var Eigenschaft in Mitarbeiter[i])
 document.write("<dd>"+ Eigenschaft + ": "+Mitarbeiter[i][Eigenschaft]+"<\/dd>");
 document.write("<\/dl>");
 }
}
//-->
</script>
 </head>
 <body onLoad="schreibe()">
  <table border=1>
   <th>Hallo</th>
   <td> 
  </table>
 </body>
 </html>

Naja, so ganz in Ordnung ist die Ausgabe noch nicht, da ich nicht weiß, was ausgegeben werden soll, aber das dürfte zu modifizieren sein...

lg D;-]c
 
Warum machen nur alle immer den selben Fehler...

Platziere den JavaScript-Code im Head, nicht im Body.
...hallo Doc...(ich bins wieder;):-))
....es ist keinerlei Problem dabei, einen Scriptblock im <body> zu notieren....wenn man im <body> etwas per write() ausgeben will, ist es sogar unerlässlich.

Bei deiner Variante wird
  • etwas in den <head> geschrieben....da hehört es kaum hin
  • da die write()-Anweisung nicht beim Einlesen der Datei erfolgt, der aktuelle Inhalt der Seite gelöscht.
 
Zuletzt bearbeitet:
einen Array mit ForSchleife mehrmals wiederholen

Hallo ihr alle!
hab mal wieder versucht weiterzubasteln.... hab auch schon ein paar FOR-Schleifen eingebaut aber meine Frage: wie muss das genau aussehen damit sich das Array einfach mehrmals wiederholt es iss ja immer die selbe Zeile in der Tabelle.... bis auf der Text der reingeschrieben werden muss.... per Hand wäre es zu lang+ aufwendig.
aktuelles Script:
<html><head><title>Test</title>
</head>
<script type="text/javascript">
<!--
var Mitarbeiter=new Array();
Code:
Mitarbeiter[0] = new Array();
Mitarbeiter[0][1]  =" ";
Mitarbeiter[0][2]  =" "; 
Mitarbeiter[0][3]  = "\""+parent.frames[0].Woerter[0]+"\"";
Mitarbeiter[0][4]  = "\""+parent.frames[0].Woerter[1]+"\"";
Mitarbeiter[0][5]  = "\""+parent.frames[0].Woerter[2]+"\"";
Mitarbeiter[0][6]  = "\""+parent.frames[0].Woerter[3]+"\"";
Mitarbeiter[0][7]  = "\""+parent.frames[0].Woerter[4]+"\"";
Mitarbeiter[0][8]  = "\""+parent.frames[0].Woerter[5]+"\"";
Mitarbeiter[0][9]  = "\""+parent.frames[0].Woerter[6]+"\"";
Mitarbeiter[0][10] = "\""+parent.frames[0].Woerter[7]+"\"";
Mitarbeiter[0][11] = "\""+parent.frames[0].Woerter[8]+"\"";
Mitarbeiter[0][12] = "\""+parent.frames[0].Woerter[9]+"\"";


for (h=0; h<11; h++)
{
for (i=0; i<11; i++)
 {
for (j=0; j<11; j++) 
  {
Mitarbeiter[1]=new Array()
Mitarbeiter[1][i] = "\""+parent.frames[0].Woerter[j]+"\"";
  }
 
 } 
}
for (var i=0;i<Mitarbeiter.length;i++)
{
document.write("<dl><dt>Mitarbeiter "+(i+1)+"<\/dt>");
for (var Eigenschaft in Mitarbeiter[i])
document.write("<dd>"+ Eigenschaft + ": "+Mitarbeiter[i][Eigenschaft]+"<\/dd>");
document.write("<\/dl>");
}
//-->
</script>

<h1>SecureIP Solution Preisliste</h1>
<body>
<table border=1>
<th>Anzahl</th>
<th>St&uuml;ck-Netto-Einzelpreis</th>
<th>St&uuml;ck-Netto-Teilsumme</th>
<th>St&uuml;cklisten Hardware und Softwarevarianten</th>
<th>Bestellnummer</th>
<th>Beschreibung Komponenten und Bestandteile</th>
<th>Bemerkungen</th>
<th>Artikel-Leistungsnummer</th>
<th>Vertrags-Gegenstands-Nummer</th>
<tr></tr>
<td><script>document.write(Mitarbeiter[0][1])</script></td> 
<td><script>document.write(Mitarbeiter[0][2])</script></td>
<td><script>document.write(Mitarbeiter[0][3])</script></td>
<td><script>document.write(Mitarbeiter[0][4])</script></td>
<td><script>document.write(Mitarbeiter[0][5])</script></td>
<td><script>document.write(Mitarbeiter[0][6])</script></td>
<td><script>document.write(Mitarbeiter[0][7])</script></td>
<td><script>document.write(Mitarbeiter[0][8])</script></td>
<td><script>document.write(Mitarbeiter[0][9])</script></td>



</table>
</body>
</html>


Vielen Dank schonmal!

liebe Grüße Jutti
 
Einen Array durchläufst du per:
Code:
for(j=0;j<arrayObj.length;++j)
    {
    //....
    }
in deinem Beispiel wäre das:
Code:
for(j=1;j<Mitarbeiter[0].length;++j)
    {
    document.write('<td>'+Mitarbeiter[0][j]+'</td>');
    }
...aber wohlgemerk....<script> ist zwar im <body> erlaubt, nicht jedoch bspw.in <tr> und <table>(was für deinen Zweck notwendig wäre).

Gehe davon aus, dass <script> im <head> und in allen Elementen erlaubt ist, welche reinen Text enthalten dürfen.
Du musst daher die Tabelle komplett per write() in die Seite schreiben:
Code:
<body>
<script type="text/javascript">
document.write('<table border="1"><tr>')
for(j=1;j<Mitarbeiter[0].length;++j)
    {
    document.write('<td>'+Mitarbeiter[0][j]+'<\/td>');
    }
document.write('<\/tr><\/table>')
</script>
</body>
 
fatalus hat gesagt.:
...hallo Doc...(ich bins wieder;):-))
....es ist keinerlei Problem dabei, einen Scriptblock im <body> zu notieren....wenn man im <body> etwas per write() ausgeben will, ist es sogar unerlässlich.

Bei deiner Variante wird
  • etwas in den <head> geschrieben....da hehört es kaum hin
  • da die write()-Anweisung nicht beim Einlesen der Datei erfolgt, der aktuelle Inhalt der Seite gelöscht.

...Hallo fatalus! :-)

Wie so oft bzw wie immer muss ich dir recht geben, da hab ich wieder mal einen großen Fehler gemacht! :sad:

Ist natürlich ganz logisch, dass man Scriptblöcke innerhalb des Bodys platzieren kann!

Ich sollte das nächste Mal denken, bevor ich mit dem Schreiben anfange... :(

lg D;-]c
 
Aufbau Tabelle mit Schleife in schön?

Hallo Leute!

Habe die Schleife mal so eingebaut . auch super .... kleines Problemchen.... wenn ihr euch das foto mal anschaut sieht man das das alles erstmal ganz richtig iss ... bei den ersten 2 Spalten steht nix drin weil das erst vom Kunden ausgefüllt wird und sobald die Anzahl da iss soll sich auch sofort der Preis berechnen lassen .... wisst ihr wie sowas gehen kann?
und dann schreibt die Schleife mehr rein als sie soll... nach den 9 Stück glaub ich iss Ende und dann soll das in die 2. Zeile geschrieben werden....
wie geht das?

Vielen Dank schon mal liebe Grüße
Jutti
 

Anhänge

Zuletzt bearbeitet:

Neue Beiträge

Zurück