Ich suche den Fehler appendChild....
Otsche
- javascript
Hallo, ich will eine Tabelle, mit 4x+1 zeilen und 4x+1 spalten erstellen, habe nun eine weile experimentiert und bekomme keine Fehlermeldung mehr, habe aber immer noch keine Tabelle, weiß nicht was falsch ist. Wichtig ist, dass ich im Nachhinein jedes <td> der Tabelle in einem array mit laufender nummer habe, wobei breite(anzahl der Spalten) und hohe(Anzahl der Reihen) der Tabelle veränderbar bleiben sollte (eben immer werte der Funktion f(x)=4x+1. Das erste <td> der Tabelle oben links sollte also über das array mit [0] ansprechbar sein, das zweite mit [1] usw... Was ist falsch:
<script language="JavaScript">
<!--
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////ERKLÄRUNG -- ERKLÄRUNG -- ERKLÄRUNG -- ERKLÄRUNG -- ERKLÄRUNG -- ERKLÄRUNG //////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
var hohe;
hohe=25; //(4x+1)
var breite;
breite=25; //(4x+1)
var produkt;
produkt=hohe*breite
var laufen1, laufen2;
laufen1=0;
laufen2=0;
var tablerow=new Array();
var tablecoll= new Array();
var texte= new Array();
////Klassen abrufbar für css Datei deklarieren////
var Klasse= new Array();
Klasse[0]=document.createAttribute("class");
Klasse[0].nodeValue="Atom";
Klasse[1]=document.createAttribute("class");
Klasse[1].nodeValue="Bindung";
//var tabellenname;
//tabellenname=document.getElementById("Baufeld");
while(laufen1<produkt)
{ if(laufen1%breite==0)
{tablerow[laufen2]=document.createElement("tr");
document.getElementById("Baufeld").appendChild(tablerow[laufen2]);
laufen2++;}
tablecoll[laufen1]=document.createElement("td");
//tablecoll[laufen1].setAttributeNode(Klasse[laufen1%2]);
texte[laufen1]=document.createTextNode["lol"];
tablecoll[laufen1].appendChild(texte[laufen1]);
tablerow[laufen2].appendChild(tablecoll[laufen1]);
laufen1++;
}
//-->
</script>
<table id=Baufeld>
Und noch eine Frage: Warum funktioniert diese ausgeklammerte Zeile nicht? Habe kaum Ahnung, hab mich nur an selfhtmlgehalten.
tablecoll[laufen1]=document.createElement("td");
//tablecoll[laufen1].setAttributeNode(Klasse[laufen1%2]);
hi,
Hallo, ich will eine Tabelle, mit 4x+1 zeilen und 4x+1 spalten erstellen, habe nun eine weile experimentiert und bekomme keine Fehlermeldung mehr, habe aber immer noch keine Tabelle, weiß nicht was falsch ist.
Ich sehe nicht, wo du die erzeugten Table-Rows überhaupt in die Tabelle einhängst.
<table id=Baufeld>
Ist das alles, was von der Tabelle im HTML existiert?
Das wäre ungültiges HTML.
Wenn du also die ganze Tabelle dynamisch aufbauen willst, dann erzeuge bitte auch table dynamisch.
Bedenke dabei, dass der IE dabei unbedingt auch einen tbody haben will.
gruß,
wahsaga
hi,
Ich sehe nicht, wo du die erzeugten Table-Rows überhaupt in die Tabelle einhängst.
Dank Andreas' Posting sehe ich nun, dass ich das übersehen habe.
gruß,
wahsaga
Danke an alle. Das geht hier ja sehr Fix mit der Hilfe...
Bin eben Anfänger, also ich denke, das mit
insertrow()
ist genau, was ich gesucht hatte. Wusste nicht, dass es das gibt. Danke
Ne, das ist nicht alles von der Tabelle ich habs nur schnell so aus meiner htmldatei kopiert... Sieht man ja auch an dem Erklärung -Feld (das hab ich rausgemacht). Muss auch das <table> unbedingt dynamisch sein?
Du sagtest ich hänge die rows nicht an, wie macht man das? Ich dachte mit
if(laufen1%breite==0)
{tablerow[laufen2]=document.createElement("tr");
document.getElementById("Baufeld").appendChild(tablerow[laufen2]);
laufen2++;}
Hätte ich das... Ich hänge doch mit dem appendChild in jedem 24ten (=breite) Durchgang (laufen1%breite==0) ein <tr> in die Tabelle mit der id="baufeld", und dann hänge ich 24 durchgänge lang einfach nur ein <td> an dieses <tr> und dann kommt wieder ein neues <tr>. Ich habe den Fehler immer noch nicht verstanden.
Und noch eine Frage: Wie kann ich die Tabelle dynamisch erzeugen. Wie oben gesehen hab ich probleme damit, Attribute zuzuweisen
Hi,
<table id=Baufeld>
{tablerow[laufen2]=document.createElement("tr");
document.getElementById("Baufeld").appendChild(tablerow[laufen2]);
tr sind in HTML keine direkten Kinder von table - da ist immer noch ein thead, tfoot oder tbody dazwischen.
cu,
Andreas
Hallo Otsche.
Hallo, ich will eine Tabelle, mit 4x+1 zeilen und 4x+1 spalten erstellen, habe nun eine weile experimentiert und bekomme keine Fehlermeldung mehr, habe aber immer noch keine Tabelle, weiß nicht was falsch ist.
Du möchtest hier ganz gewiss insertRow und insertCell nutzen.
Wichtig ist, dass ich im Nachhinein jedes <td> der Tabelle in einem array mit laufender nummer habe,
Was bei der cells-Kollektion der Fall ist.
<script language="JavaScript">
Das zwingend <http://de.selfhtml.org/html/transit/scripts.htm#definieren@title=erforderliche type-Attribut> fehlt. Das language-Attribut kannst du verwerfen.
<!--
Auf die HTML-Kommentare im JS-Bereich kannst du heutzutage auch verzichten.
Allgemein zum Script: du greifst auf table#Baufeld zu, bevor sie überhaupt existiert. Um das zu verhindern, solltest du den onload-Eventhandler nutzen, z. B. so:
window.onload = function() {
// Dein Script
};
Einen schönen Montag noch.
Gruß, Ashura