for-Schleife in HTML-Seite
Sebastian
- javascript
Hallo!
Ich möchte gerne in meiner HTML-Seite einen bestimmten Codeblock mit Hilfe einer for-Schleife automatisch mehrfach generieren lassen.
Dazu habe ich den folgenden Ansatz gewählt, der aber leider nicht funktioniert. Kann mir jemand sagen was ich falsch mache?
Danke und Gruß
Sebastian
<body>
...
<script type="text/javascript">
for (var i=1; i<=3; i++)
document.write(
<table><tr><td>TEST</td></tr></table>
);
</script>
...
</body></html>
Nachtrag:
ich habe gerade festgestellt, dass es in der einfachen Variante funktioniert!
Sobald der zu erzeugende Code aber etwas komplexer wird, passiert nichts mehr.
Beispiel:
<script type="text/javascript">
for (var i=1; i<=3; i++)
document.write(
<TABLE style="width:500px;" cellspacing="0" cellpadding="0" border="0">
<tr style="height:20px"></tr>
<tr style="height:120px">
<td style="background:url(dia_mid.gif); background-repeat:repeat-x;"><table style="width:100%;" class="smalltxt" cellspacing="0" cellpadding="2" border="0"></td></tr>
<tr>
<td valign="top" style="width:25%">Titel:</td>
<td style="width:5px"> </td>
<td><a href="/fotos/les2alpes2005/index.html"><b>Les 2 Alpes 2005</b></a></td>
<td style="width:10px; background:url(dia_right.gif); background-repeat:no-repeat;" nowrap="nowrap"></td>
</tr></table>
);
</script>
Nachtrag:
Hallo Ingrid! (SCNR)
<TABLE style="width:500px;" cellspacing="0" cellpadding="0" border="0">
Du möchtest etwas aufräumen? Wenn du CSS benutzt, dann sind die veralteten HTML-Attribute überflüssig. Und wenn du CSS richtig benutzt (also ein zentrales Stylesheet), dann sind auch Inline-style-Attribute überflüssig.
Vorteil: Du musst gleiche Angaben nicht 42 Mal machen, sondern nur einmal. Und der Quelltext wird durch Trennung von Struktur und Layout übersichtlicher.
See ya up the road,
Gunnar
Hallo,
ich habe gerade festgestellt, dass es in der einfachen Variante funktioniert!
Sobald der zu erzeugende Code aber etwas komplexer wird, passiert nichts mehr.
Auch deine einfache Variante vom ersten posting sollte ohne Anführungszeichen um den String der ins dokument geschrieben werden sollte nicht funktionieren.
So weit ich mich erinnere kann document.write immer nur eine einzelne Zeile Schreiben und nicht mehrere auf einmal. Außerdem fehlen dir noch die geschweiften Klammern um das was wiederholt werden soll.
for (var i=1; i<=3; i++) {
document.write('<TABLE style="width:500px;" cellspacing="0" cellpadding="0" border="0">');
document.write('<tr style="height:20px"></tr>');
document.write('<tr style="height:120px">');
document.write('<td style="background:url(dia_mid.gif); background-repeat:repeat-x;">');
// usw. usf.
}
Ich wäre das aber sowieso anders angegangen und hätte die Tabelle wohl mir DOM-Methoden zusammengebastelt, dabei das aussehen per CSS festgelegt und mehrmals ins Dokument eingehängt. Dies allerdings benötigt etwas mehr Übung mit JavaScript, aber vielleicht behälst du das im Hinterkopf für die Zukunft.
Grüße
Jeena Paradies
Hallo,
Außerdem fehlen dir noch die geschweiften Klammern um das was wiederholt werden soll.
Wirklich? Wenn ich mich recht entsinne, wird ohne geschweifte Klammern immer nur die erste Anweisung nach Deklaration der Schleife wiederholt. Oder war das nur in Java so?
Viele Grüße
Hallo,
Wirklich? Wenn ich mich recht entsinne, wird ohne geschweifte Klammern immer nur die erste Anweisung nach Deklaration der Schleife wiederholt. Oder war das nur in Java so?
Ja das ist auch in JS so, aber das ist vom OP eindeutig nicht gewollt, er vollte die komplette Tabelle wiederholen nicht nur den <table>-Tag
Grüße
Jeena Paradies
Hallo Jeena,
Ja das ist auch in JS so, aber das ist vom OP eindeutig nicht gewollt, er vollte die komplette Tabelle wiederholen nicht nur den <table>-Tag
Ich sehe genau eine JavaScript-Anweisung innerhalb der Schlaufe, nämlich document.write, dafür brauchts keine geschweiften Klammern. Und document.write kann sehr wohl Zeilen-Umbrüche schreiben: \n
Grüsse
Siramon,
ja der Penner aus Nr. 14
danke für eure hilfe, habs inzwischen hinbekommen.
offenbar mochte er ausdrücke wie   nicht.
übrigens, so funktionierts:
document.write(<html>);
und mit anführungszeichen nicht:
document.write('<html>');
komisch.
Hallo,
danke für eure hilfe, habs inzwischen hinbekommen.
offenbar mochte er ausdrücke wie   nicht.
Natürlich, denn es muss ja auch das & als & geschrieben werden.
übrigens, so funktionierts:
document.write(<html>);
und mit anführungszeichen nicht:
document.write('<html>');
Na das kann ich mir nun wirklich nicht vorstellen, write() erwartet einen String und <html> ist ein sinnlos Konstrukt und bedeutet: "kleiner als, die (leere) Variable html, größer als" eigentlich müsste das einen Fehler in der JS Konsole geben.
Grüße
Jeena Paradies
Hello out there!
document.write(
<table><tr><td>TEST</td></tr></table>
);
document.write erwartet als Argument einen String (oder einen JavaScript-Ausdruck) als Parameter.
Wie werden Strings in JavaScript begrenzt?
See ya up the road,
Gunnar