Tabelle aus einer *.js - Datei heraus erstellen
Alois Müller
- javascript
Hallo zusammen,
möchte mittels einer js.Datei eine Menueleiste (Tabelle) beim Klick auf eine Schaltfläche erzeugen.
Ich habe nur eine mühsame Variante gefunden. Zunächst lege ich ein leeres 'div' in jeder Seite ab. Dieses div-tag wird dann durch die nachstehende Funktion mit einer Tabelle gefüllt.
Mir erscheint es umständlich, die zu erstellende Tabelle zunächst in einer Variablen ('Neu') unterzubringen.
Gibt es nicht eine einfachere Methode?
function test()
{
var Neu = "";
Neu = Neu + "<table border="+0+" cellpadding="+0+" cellspacing="+0+" width="+140+">" +
"<tr>" +
"<td width="+138+"><a href="+"index.htm"+">index</a></td>" +
"</tr>" +
"<tr>" +
"<td width="+138+"><a href="+"links.htm"+">links</a></td>" +
"</tr>" +
"<tr>" +
"<td width="+138+"><a href="+"musikanten.htm"+">musikanten</a></td>" +
"</tr>" +
"</table>";
document.all.demo1.innerHTML = Neu;
}
}
Grüße aus Bendorf
Alois
hi Alois,
Mir erscheint es umständlich, die zu erstellende Tabelle zunächst in einer Variablen ('Neu') unterzubringen. Gibt es nicht eine einfachere Methode?
Zunächst einmal sieht es so aus, als ob das ja funktionieren könnte. Und solange du keine bessere Möglichkeit kennst, nimmst du doch die, die funktioniert ...
Ob es "bessere" Möglichkeiten gibt, ist zweifelhaft. "Andere" Möglichkeiten gibt es jedoch durchaus. Wenn es ja eh schon Javascript sein muß, kannst du deine Tabelle auch mit document.write erzeugen, das gibt (geringfügig) weniger Code.
Aber noch etwas:
document.all.demo1.innerHTML = Neu;
Mit "document.all" solltest du besser nicht arbeiten, weil du damit fast alle modernen Browser ausschließt, und nur einen zuläßt ...
Grüße zurück aus Berlin
Christoph S.
Hallo Christoph,
Ob es "bessere" Möglichkeiten gibt, ist zweifelhaft. "Andere" Möglichkeiten gibt es jedoch durchaus. Wenn es ja eh schon Javascript sein muß, kannst du deine Tabelle auch mit document.write erzeugen, das gibt (geringfügig) weniger Code.
Ich komme mit document.write nicht hin, da ich (Anfänger) die Tabelle nicht in das div-element hinbringe. Hab´s mit document.write versucht, dann bekomme ich aber zunächst ´ne leere Seite.
Vorab vielen Dank.
Alois
hi,
Ich komme mit document.write nicht hin, da ich (Anfänger) die Tabelle nicht in das div-element hinbringe.
Wieso nicht? Ist doch ganz einfach:
<div id="irgendwas" style="CSS-Angaben">
<script type="text/javascript" language="javascript">
document.write('<table border="0" cellpadding="0" cellspacing="0" width="140">');
document.write('<tr><td><a href="index.htm">index</a></td></tr>');
document.write('<tr><td>irgendwelcher Text</td></tr></table>');
</script>
</div>
Grüße aus Berlin
Christoph S.
Hallo Christoph, vielen Dank für Deine Antwort.
Wieso nicht? Ist doch ganz einfach:
Für mich als Anfänger leider nicht.
<div id="irgendwas" style="CSS-Angaben">
<script type="text/javascript" language="javascript">
document.write('<table border="0" cellpadding="0" cellspacing="0"
</script>
</div>
Ich möchte ja alles in einer separaten .js - Datei unterbringen. Und von dort möchte ich dann das div-tag "irgendwas" referenzieren. Ich weiß nicht, wie ich das in der separaten Datei unterbringe, also wie ich von dort aus das div-tag mit einer Tabelle "fülle".
Gruß Alois
hi Alois,
Ich möchte ja alles in einer separaten .js - Datei unterbringen.
Das ist ein sehr lobenswerter Vorsatz. Dann kann - wenn wir bei meinem "minimalistischen" Beispiel bleiben wollen - deine externe JS-Datei so aussehen:
--- Datei tabelle.js ---
document.write('<div id="irgendwas" style="CSS-Angaben">');
document.write('<table border="0" cellpadding="0" cellspacing="0" width="140">');
document.write('<tr><td><a href="index.htm">index</a></td></tr>');
document.write('<tr><td>irgendwelcher Text</td></tr></table>');
document.write('</div>');
------------------------
Und an der Stelle im <body>, an der du dein externes Javascript brauchst, schreibst du einfach:
<script type="text/javascript" language="javascript" src="tabelle.js"></script>
fertig.
Allerdings solltest du - auch wenn du ein "Anfänger" bist - dir sehr genau anschauen, was Henryk inzwischen geschrieben hat. Was ich dir vorschlage, ist für dich etwas leichter zu verstehen und umzusetzen, was Henryk sagt, ist der mit Javascript derzeit wahrscheinlich eleganteste Weg.
Grüße aus Berlin
Christoph S.
Moin,
Ob es "bessere" Möglichkeiten gibt, ist zweifelhaft. "Andere" Möglichkeiten gibt es jedoch durchaus. Wenn es ja eh schon Javascript sein muß, kannst du deine Tabelle auch mit document.write erzeugen, das gibt (geringfügig) weniger Code.
document.write() möchte man aber wirklich nicht verwenden, da ist innerHTML ja schon fast erträglich dagegen. Noch besser wäre wenn man es richtig[tm] nach DOM macht und die Elemente mit den dazugehörigen Methoden erzeugt und in den Dokument-Baum einhängt -> http://selfhtml.teamone.de/javascript/objekte/document.htm#create_element.
hallo Henryk,
document.write() möchte man aber wirklich nicht verwenden
Was spricht so vehement dagegen?
da ist innerHTML ja schon fast erträglich dagegen
Und was spricht so vehement dafür?
Nach dem Beispiel, das Alois angegeben hat, will er ohnehin nur ein paar links reinsetzen, da ist im Grunde genommen weder eine Tabelle moch ein DIV zwingend nötig. Woher sollte er aber jetzt die Daten für "innerHTML" nehmen?
Noch besser wäre wenn man es richtig[tm] nach DOM macht
Klar. Ich habe sehr deutlich (denke ich) gesagt, daß es "andere" Möglichkeiten als die bisher von ihm gewählte gibt - übrigens auch diverse elegante Möglichkeiten ohne Javascript. Mein Vorschlag ist nicht zwingend "besser".
und die Elemente mit den dazugehörigen Methoden erzeugt und in den Dokument-Baum einhängt -> http://selfhtml.teamone.de/javascript/objekte/document.htm#create_element.
Du hast zwar recht, aber gerade diese Möglichkeit gehört zu denen, die am schwierigsten zu verstehen sind - für einen "Anfänger"
Grüße aus Mitte
Christoph S.
PS: sehen wir uns nächstes Wochenende? Mich würde es freuen
Moin,
document.write() möchte man aber wirklich nicht verwenden
Was spricht so vehement dagegen?
Irgendwie bin ich auf den schmalen Pfad gekommen, dass document.write() mittlerweile deprecated sei. Aber ein kurze Überprüfung von DOM level 1 und 2 zeigt mir grade, dass dem nicht so ist, _noch_ nicht. (Es steht aber drin dass das demnächst passieren wird. Für geeignete Werte von "demnächst".)
da ist innerHTML ja schon fast erträglich dagegen
Und was spricht so vehement dafür?
Ich nehme alles zurück und behaupte das Gegenteil: Solange wir noch bei DOM Level 2 festsitzen (zumal der IE nicht mal das hinkriegt) ist document.write() in Ordnung, da es im Gegensatz zu innerHTML im Standard definiert ist.
Du hast zwar recht, aber gerade diese Möglichkeit gehört zu denen, die am schwierigsten zu verstehen sind - für einen "Anfänger"
Ack, das hat mich zuerst auch extrem vom DOM abgeschreckt ... für ca. 6 Monate. Jetzt mag ich es und lasse diese Funktionen links liegen (bin zur Zeit bekennender innerHTML-Benutzer).
PS: sehen wir uns nächstes Wochenende? Mich würde es freuen
Jupp, bin ja sowieso hier.