Tabelle automatisch erweitern
Sascha321
- javascript
Hallo
ich habe eine Tabelle die 5 Zeilen hat, nun möchte ich das wenn die 5 Zeile voll ist Automatisch eine neue zeile dabei kommt.
Kann mir einer sagen wie man das realisieren kann oder hat irgendwo jemand ein Beispiel?
Danke
Vorschlag:
Das letzte Feld in der letzten Zeile kriegt einen onChange Event-Handler, beispielsweise onChange=makeNewTableRow().
Die Funktion makeNewTableRow() erzeugt dann mittels document.createElement() die neue Tabellenzeile und hängt sie mit appendChild() in die Tabelle. Das letzte Feld in der Zeile hat wieder den Event-Handler.
http://de.selfhtml.org/javascript/objekte/document.htm#create_element
http://de.selfhtml.org/javascript/objekte/node.htm#append_child
Martin
Hallo Sascha321,
du benötigst u.A. createElement (http://de.selfhtml.org/javascript/objekte/document.htm#create_element) und appendChild (http://de.selfhtml.org/javascript/objekte/node.htm#append_child). Beachte dabei, dass die TR Kinder von TBODY sind, und nicht von TABLE.
Ein Beispiel, in dem eine komplette Tabelle dynamisch angelegt wird, findest du hier: http://www.j-berkemeier.de/Sudoku.html in der Funktion "make_table".
Gruß, Jürgen
Hallo JürgenB.
du benötigst u.A. createElement (http://de.selfhtml.org/javascript/objekte/document.htm#create_element) und appendChild (http://de.selfhtml.org/javascript/objekte/node.htm#append_child). Beachte dabei, dass die TR Kinder von TBODY sind, und nicht von TABLE.
Nur als Ergänzung, weil ich dies eben bei meinem Beitrag vergessen hatte: bei der DOM-Methode insertRow() muss man sich darüber keine Gedanken machen, da implizit ein tbody beim Einfügen einer Zeile eingefügt wird.
Einen schönen Freitag noch.
Gruß, Ashura
Hallo Ashura,
ich habe natürlich mit deinem Hinweis auf "insertRow()" gerechnet. :)
Ich selbst zögere noch, createElement("tr") etc. durch die Tabellen-Methoden zu ersetzen, da ich davor zurückschrecke, wieder alles in allen möglichen Browsern zu testen. Hast du Erfahrungen im dynamischen Anlegen von Tabellen? Speziell das Verhalten unter MacOS mit Safari und IE würde mich interessieren, da ich für Tests auf den Macs immer Kollegen aus anderen Abteilungen (und Gebäuden) nerven muss.
Gruß, Jürgen
Hallo JürgenB.
Ich selbst zögere noch, createElement("tr") etc. durch die Tabellen-Methoden zu ersetzen, da ich davor zurückschrecke, wieder alles in allen möglichen Browsern zu testen. Hast du Erfahrungen im dynamischen Anlegen von Tabellen?
In der praktischen Anwendung habe ich diese Methoden bisher kaum gebraucht, da ich recht wenig mit Tabellen arbeite. In den Fällen, in denen ich bisher aber mit diesem Methoden gearbeitet habe, konnte ich keine Probleme verzeichnen. Ich gehe außerdem davon aus, dass weitaus mehr Browser die insert*-Methoden implementiert haben, als es bei createElement, appendChild und Konsorten der Fall ist.
Sowohl in der MSDN als auch im DOM kann ich die Spezifikation dieser Methoden finden, das genaue Alter kann ich aber leider nicht nennen.
Speziell das Verhalten unter MacOS mit Safari und IE würde mich interessieren, da ich für Tests auf den Macs immer Kollegen aus anderen Abteilungen (und Gebäuden) nerven muss.
Mein kleines Testscript erzeugt beim Laden 3 Zellen zu je 500 Zeilen. Zusätzlich kann mit Hilfe des Buttons eine weitere Zeile und eine darin enthaltene Zelle eingefügt werden.
Resultat Safari:
Resultat Mac-IE:
Wie zu sehen ist, verhunzt der Mac-IE den Aufbau der Tabelle. Per innerHTML ist zu erkennen, dass er in die Tabelle zuerst die Zeichendaten und danach sämtliche Zeilen und Zellen, natürlich ohne Inhalt, einfügt. Variationen habe ich jetzt nicht unbedingt ausprobiert, möglicherweise funktioniert es im Mac-IE, wenn erst nach dem Einfügen aller Zeilen und Zellen die Zeichendaten eingefügt werden.
Einen schönen Sonntag noch.
Gruß, Ashura
Hallo Ashura,
Danke.
Wie zu sehen ist, verhunzt der Mac-IE den Aufbau der Tabelle. Per innerHTML ist zu erkennen, dass er in die Tabelle zuerst die Zeichendaten und danach sämtliche Zeilen und Zellen, natürlich ohne Inhalt, einfügt. Variationen habe ich jetzt nicht unbedingt ausprobiert, möglicherweise funktioniert es im Mac-IE, wenn erst nach dem Einfügen aller Zeilen und Zellen die Zeichendaten eingefügt werden.
Probleme mit dem MAC-IE waren zu erwarten. Man kann nur hoffen, dass er irgendwann verschwunden ist.
Gruß, Jürgen
Hallo Sascha321.
ich habe eine Tabelle die 5 Zeilen hat, nun möchte ich das wenn die 5 Zeile voll ist Automatisch eine neue zeile dabei kommt.
Kann mir einer sagen wie man das realisieren kann oder hat irgendwo jemand ein Beispiel?
Ganz einfach mit insertRow().
Einen schönen Freitag noch.
Gruß, Ashura, der immer wieder für die vorimplementierten Methoden plädiert.
Hallo
Sorry das ich mich so spät melde.
Danke erstmal für die Infos werde das am WE ausprobieren mal sehen ob ich das so hin bekomme.
Vielen Dank für eure Hilfen aber das ist dann wohl doch zu hoch für mich.
Ich weiß überhaubt nicht wie ich das mit diesen Befehlen Bewerkstelligen soll.
Hat den keiner ein Beispiel so wie ich es haben möchte?
Danke
Hallo Sascha321.
Vielen Dank für eure Hilfen aber das ist dann wohl doch zu hoch für mich.
Ich weiß überhaubt nicht wie ich das mit diesen Befehlen Bewerkstelligen soll.
Was hat dich daran gehindert, bspw. nach „insertrow“ zu suchen?
Dadurch finden sich einige Anwendungsbeispiele, wie z. B. im Developer-Bereich auf mozilla.org.
Einen schönen Sonntag noch.
Gruß, Ashura
Hallo Ashura,
ich bekomme das nicht hin kannst du mir das ihr mal einbauen??
<html>
<head>
</head>
</head>
<body >
<table width="750" height="5" border="2" align="center">
<tr>
<td class="style4">Pos</td>
<td class="style4">Merkmal</td>
<td class="style4">Elementname</td>
<td class="style4">Referenz</td>
<td class="style4">Soll</td>
<td class="style4">ob.Tol.</td>
<td class="style4">unt.Tol</td>
<td class="style4">unt.Tol</td>
<td class="style4">Istwert</td>
<td class="style4">Abw.</td>
<td class="style4">ÜbSchr.</td>
</tr>
<tr>
<td><input size="2"></td>
<td><input size="2"></td>
<td><input size="2"></td>
<td><input size="2"></td>
<td><input size="2"></td>
<td><input size="2"></td>
<td><input size="2"></td>
<td><input size="2"></td>
<td><input size="2"></td>
<td><input size="2"></td>
<td><input size="2"></td>
</tr>
</table>
</body>
</html>
Ich möchte das sich die Input Felder nach unten hin einfach automatisch erweitern.
Hallo Sascha321.
ich bekomme das nicht hin kannst du mir das ihr mal einbauen??
Ich kann, werde aber nicht, da dies hier SELFHTML und nicht GETHTML ist.
Ich möchte das sich die Input Felder nach unten hin einfach automatisch erweitern.
Dann füge einen http://de.selfhtml.org/html/formulare/klickbuttons.htm@title=Button ein, welcher <http://de.selfhtml.org/javascript/sprache/eventhandler.htm#onclick@title=beim Klicken> eine Funktion aufruft.
In dieser Funktion nun verschaffst du dir mittels bereits erwähntem document.http://de.selfhtml.org/javascript/objekte/document.htm#get_elements_by_tag_name@title=getElementsByTagName Zugriff auf die Tabelle. Danach nutzt du die insertRow-Methode um eine Tabellenzeile einzufügen. Willst du dir Arbeit ersparen, so speicherst du den Rückgabewert dieser Methode in einer Variable. Damit hast du bequemerweise direkt eine Referenz auf die soeben eingefügte Tabellenzeile, welche wir in den nächsten Schritten benötigen.
Denn nun fügst du mittels insertCell eine Zelle in diese Zeile und in diese Zelle wiederum ein input-Element ein.
Letzteres erzeugst du mittels http://de.selfhtml.org/javascript/objekte/document.htm#create_element@title=createElement und weißt seiner http://de.selfhtml.org/javascript/objekte/htmlelemente.htm#input@title=size-Eigenschaft den gewünschten Wert zu.
Mit Hilfe der verlinkten Dokumente solltest du dies alleine hinbekommen können. Zumindest solltest du es versuchen und nachfragen, wenn du etwas nicht verstehst oder einfach nicht weiter weißt.
Einen schönen Sonntag noch.
Gruß, Ashura
Hallo Ingrid.
Letzteres erzeugst du mittels http://de.selfhtml.org/javascript/objekte/document.htm#create_element@title=createElement und weißt seiner http://de.selfhtml.org/javascript/objekte/htmlelemente.htm#input@title=size-Eigenschaft den gewünschten Wert zu.
Zum Einfügen benötigst du hier die http://de.selfhtml.org/javascript/objekte/node.htm#append_child@title=appendChild-Methode.
Einen schönen Sonntag noch.
Gruß, Ashura
Hallo Ashura,
mhh ich bin nun soweit das mir eine neue Zeile eingefügt wird aber ich bekomme es nicht hin das mir eine Spalte eingefügt wird.
Ich weiss wirklich nicht mehr weiter.
<html>
<head>
<script type="text/javascript">
<!--
var Zeile = 2;
function newrow()
{
var spalte = document.getElementById("quali1").insertRow(Zeile);
Zeile +=1;
}
//-->
</script>
</head>
</head>
<body >
<form name="Formular" action="">
<table id="quali1" width="750" height="5" border="2" align="center">
<tr>
<td class="style4">Pos</td>
</tr>
<tr>
<td><input size="2"></td>
</tr>
</table>
</form>
<input type="submit" onClick="newrow()" value="neue Zeile">
</body>
</html>
Hallo Sascha321,
mhh ich bin nun soweit das mir eine neue Zeile eingefügt wird aber ich bekomme es nicht hin das mir eine Spalte eingefügt wird.
du solltest dir mal das Beispiel von Ashura etwas weiter unten (https://forum.selfhtml.org/?t=128902&m=833945) ansehen, und da speziell "insertCell".
Gruß, Jürgen
Hallo
Also ich weiß nicht bin wohl nicht dafür geschaffen das zu machen.
Aber vielleicht erbarmt sich ja jemand mir den Code mal zu vervollständigen. Ich bekomme es einfach nicht hin das er mir 10 Input Felder macht.
<html>
<head>
<script type="text/javascript">
// Last updated 2006-02-21
function addRowToTable()
{
var tbl = document.getElementById('Tabelle');
var lastRow = tbl.rows.length;
// if there's no header row in the table, then iteration = lastRow + 1
var iteration = lastRow;
var row = tbl.insertRow(lastRow);
// left cell
var cellLeft = row.insertCell(2);
var textNode = document.createTextNode(iteration);
cellLeft.appendChild(textNode);
}
</script>
</head>
<body>
<form name="Formular" action="">
<input type="button" value=" OK " onclick="addRowToTable()"><br>
</form>
<table border="2" id="Tabelle">
<tr>
<td>Eine Tabelle</td>
<td>Eine Tabelle2</td>
<td>Eine Tabelle3</td>
<td>Eine Tabelle4</td>
</tr>
</table>
</body>
</html>
Hallo Sascha321.
Ich bekomme es einfach nicht hin das er mir 10 Input Felder macht.
Dann wird es Zeit, dass du Debugging lernst.
Das heißt: lasse dir an allen Stellen, an denen etwas passiert, eine Meldung z. B. per alert() ausgeben.
Und noch wichtiger: Schau nach, was die Fehlerkonsole eines Geckos wie z. B. Firefox zu deinem Code zu sagen hat.
Wenn du 10 Eingabefelder einfügen möchtest (in jeweils 10 Zeilen schätze ich) bietet sich eine Schleife an.
Einen schönen Dienstag noch.
Gruß, Ashura
Hallo Ashura,
nein 10 Eingabe Felder in 10 Zeilen wäre ja nun langsam sogar für mich nicht mehr so schwer. Ich will 10 Eingabe felder in einer Zeile haben.
Ich muß auch ehrlich sagen das ich bei diesem Script nicht genau weis was im unterem bereich passiert. Habe mal das was ich weiß hinter die Zeilen geschrieben kannst du mir das bitte mal verwollständigen?
Blicke bei dem Script zum schluß nicht ganz durch .
Danke
<html>
<head>
<script type="text/javascript">
function addRowToTable() // Functions aufruf
{
var tbl = document.getElementById('Tabelle'); // Spricht die Tabelle über die ID an
var lastRow = tbl.rows.length; // zählt wieviel Zeilen(rows) die Tabelle hat
var iteration = lastRow; // die Zeilen werden in die Variable "iteration" geschrieben
var row = tbl.insertRow();
var cell1 = row.insertCell(); //hier wird doch eine Zelle in eine Zeile gesteckt oder?? wenn ja Warum?
var textNode = document.createTextNode(iteration);
cell1.appendChild(textNode);
}
</script>
</head>
<body>
<form name="Formular" action="">
<input type="button" value=" OK " onclick="addRowToTable()"><br>
</form>
<table border="2" id="Tabelle">
<tr>
<td>Eine Tabelle</td>
<td>Eine Tabelle2</td>
<td>Eine Tabelle3</td>
<td>Eine Tabelle4</td>
</tr>
</table>
</body>
</html>
Bitte helf mir doch hier bei
Hallo Sascha.
nein 10 Eingabe Felder in 10 Zeilen wäre ja nun langsam sogar für mich nicht mehr so schwer. Ich will 10 Eingabe felder in einer Zeile haben.
Dann füge Zeile+Zelle in die Tabelle und hierin wiederum mit bereits erwähnter Schleife die 10 Eingabefelder ein.
Blicke bei dem Script zum schluß nicht ganz durch .
Ich erkläre es gerne, also schauen wir einmal. Ich werde versuchen, zusätzlich alternative Lösungsmöglichkeiten aufzuzeigen, sofern passend.
var tbl = document.getElementById('Tabelle'); // Spricht die Tabelle über die ID an
Die Tabelle könntest du hier (bei mehreren Tabellen im Dokument natürlich mit einem anderen Index) ebenso gut aber auch per document.getElementsByTagName('table')[0] (0 für die erste Tabelle) referenzieren. Damit würdest du dir die unnötige (und zudem momentan noch recht aussagefreie) ID ersparen. Dahinter steckt wie so oft die Reduzierung des HTMLs auf ein Minimum. Alle weiteren Schichten (vorrangig CSS und JS) können dann hierauf aufbauen.
var lastRow = tbl.rows.length; // zählt wieviel Zeilen(rows) die Tabelle hat
Und die Variable wird im folgenden nirgends wirklich sinnvoll genutzt.
var iteration = lastRow; // die Zeilen werden in die Variable "iteration" geschrieben
Nein, die Anzahl der Zeilen wird in „iteration“ abgelegt. Dies hättest du aber auch gleich direkt machen können:
var iteration = tbl.rows.length;
var cell1 = row.insertCell(); //hier wird doch eine Zelle in eine Zeile gesteckt oder?? wenn ja Warum?
Dies kannst du in Form einer Anmerkung im DOM HTML Level 2 erfahren:
Note: A table row cannot be empty according to [HTML 4.01].
var textNode = document.createTextNode(iteration);
Hier wird ein neuer Textnoten erzeugt, dessen Wert dem Inhalt von „iteration“ entspricht. Da du hier keine Schleife verwendest, welche diesen Wert kontinuierlich modifiziert, wird stets der selbe Wert eingetragen.
cell1.appendChild(textNode);
Hier wird schließlich der Textknoten in die Tabellenzelle eingehangen.
Bitte helf mir doch hier bei
Ich hoffe einige Unklarheiten aus der Welt geschafft zu haben.
Einen schönen Dienstag noch.
Gruß, Ashura
Hallo Ashura,
vielen dank erstmal für die Hilfe ich denke ich habe erstmal das was ich wollte. Es wird aber eventuell demnächst weiter gehen.
Dafür wollte ich dann unter aderem die Variable "iteration" haben, um die einzelnen Felder zu definieren.Kannst Du dir den Code nochmal anschauen und sagen ob das so richtig ist, funktionieren tut es ja.
<html>
<head>
<script type="text/javascript">
function addRowToTable() // Functions aufruf
{
var tbl = document.getElementById('Tabelle'); // Spricht die Tabelle über die ID an
var lastRow = tbl.rows.length; // zählt wieviel Zeilen(rows) die Tabelle hat
var iteration = lastRow; // die Zeilen werden in die Variable "iteration" geschrieben
var row = tbl.insertRow();
var cell1 = row.insertCell();
var textNode = document.createTextNode(iteration);
cell1.appendChild(textNode);
for (var i =0; i <= 8; i++)
{
var cell1 = row.insertCell();
var textNode = document.createTextNode(" ");
cell1.appendChild(textNode);
}
}
</script>
</head>
<body>
<form name="Formular" action="">
<input type="button" value=" OK " onclick="addRowToTable()"><br>
</form>
<table border="2" id="Tabelle">
<tr>
<td>Eine Tabelle</td>
<td>Eine Tabelle2</td>
<td>Eine Tabelle3</td>
<td>Eine Tabelle4</td>
</tr>
</table>
</body>
</html>
Danke
Hallo Sascha321.
vielen dank erstmal für die Hilfe ich denke ich habe erstmal das was ich wollte. Es wird aber eventuell demnächst weiter gehen.
Nicht, wenn du dich eingehend mit der Materie befasst. SELFHTML und die DOM-Spezifikation sollten kaum Fragen offen lassen.
Dafür wollte ich dann unter aderem die Variable "iteration" haben, um die einzelnen Felder zu definieren.
Inwiefern? Könntest du dies erläutern?
~~~javascript
for (var i =0; i <= 8; i++)
{
var cell1 = row.insertCell();
var textNode = document.createTextNode(" ");
cell1.appendChild(textNode);
}
Wolltest du nicht Eingabefelder einfügen?
Einen schönen Mittwoch noch.
Gruß, Ashura
--
sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
„It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
[[HTML Design Constraints: Logical Markup](http://www.w3.org/History/19921103-hypertext/hypertext/WWW/MarkUp/HTMLConstraints.html)]
Hallo Ashura,
Wie meinst du das nun wieder
"Wolltest du nicht Eingabefelder einfügen?"
doch wollte ich, habe ich doch oder?
Gruß Sascha
Hallo Sascha321.
Wie meinst du das nun wieder
"Wolltest du nicht Eingabefelder einfügen?"doch wollte ich, habe ich doch oder?
Nö:
var textNode = document.createTextNode(" ");
cell1.appendChild(textNode);
Du erstellst einen Textknoten und hängst ihn in die Tabellenzelle ein. Von einem Eingabefeld ist hier nichts zu sehen.
Lies hierzu, sofern du dahin gehend noch Probleme hast, noch einmal den vorletzten Absatz in meiner Beschreibung.
Einen schönen Mittwoch noch.
Gruß, Ashura
Hallo Ashura,
Du müsstest doch merken das ich nicht weiss wie man ein Inputfeld erzeugt.
Es ist auch nirgends beschrieben wie man ein Inputfeld erzeugt.
Kannst du nicht mal über deinen schatten springen und mir das sagen??
createElement("text");
ist das so richtig?
wenn ja, darüber ist nirgends was zu finden und die Eingabefelder werden nicht dargestellt.
Hallo Sascha321.
Du müsstest doch merken das ich nicht weiss wie man ein Inputfeld erzeugt.
Und du müsstest doch merken, dass ich dir im Grunde alle erforderlichen Hinweise bereits gegeben habe. Es verbietet dir niemand, darüber hinaus zu suchen.
createElement("text");
ist das so richtig?
Gibt es ein <text></text> bzw. <text /> oder möchtest du nicht lieber ein <input /> erzeugen?
Einen schönen Donnerstag noch.
Gruß, Ashura
Hallo Ashura,
mich würde interessieren aus welchem Berufszweig Du kommst oder wie Du Autofahren gelernt hast.
Also ich weiß nur wenn sich bei uns einer mit einer Maschine nicht auskennt erklärt man Ihm diese und sagt nicht einfach schau doch auf Seite 150 und 581. Und genau das machst Du.
Was wäre für dich so schlimm gewesen wenn du mir ein Kurzes Script geschrieben hättest in dem die Funktionen drin sind, ich glaube Du hast doch nur Angst das ich das dann so übernommen hätte.
Schade das das für dich ein zu größer aufwand gewesen ist. Du schmeißt einen Brocken an den Kopf die nicht mal genau zu dem was man machen will passen. Du kannst nicht einfach von dem logischem und deinem wissen ausgehen. Ich denke auch Du hast Sachen wo Du nicht bescheit weißt und bist dann froh wenn dir einer ein Beispiel gibt wo Du dann genau siehst wie was funktioniert und nicht nur so ungefair.
Wieso schreibst Du eigentlich in dem Forum?? Wenn es Dir zu wider ist einem zu helfen bzw richtig zu helfen?
Und jetzt könnt ihr mich als stänker Heini verurteilen.
Hallo.
Schade das das für dich ein zu größer aufwand gewesen ist.
[...]
Wieso schreibst Du eigentlich in dem Forum?? Wenn es Dir zu wider ist einem zu helfen bzw richtig zu helfen?
Schade, dass du das Konzept nicht verstehst.
MfG, at
Hallo Sascha321.
mich würde interessieren aus welchem Berufszweig Du kommst
Laut Ausbildung: Informationsverarbeitung.
oder wie Du Autofahren gelernt hast.
Ich habe die theoretischen Fakten studiert und danach versucht, diese im Praktischen umzusetzen.
Also ich weiß nur wenn sich bei uns einer mit einer Maschine nicht auskennt erklärt man Ihm diese und sagt nicht einfach schau doch auf Seite 150 und 581. Und genau das machst Du.
Und warum ist es dir zuwider, tatsächlich nachzuschlagen?
Was wäre für dich so schlimm gewesen wenn du mir ein Kurzes Script geschrieben hättest in dem die Funktionen drin sind, ich glaube Du hast doch nur Angst das ich das dann so übernommen hätte.
Nein. Ich poste normalerweise keine Scripte, weil ich dem Fragenden damit sämtliche Denkarbeit abnehmen würde. Ich möchte aber, dass er sich selbst eine Lösung unter Zuhilfenahme meiner Hinweise erarbeitet, da ich der festen Überzeugung bin, dass dadurch der Lösungsweg und vielleicht sogar die allgemeine Methode, eine Lösung zu finden deutlicher im Gedächtnis verbleibt.
Schade das das für dich ein zu größer aufwand gewesen ist. Du schmeißt einen Brocken an den Kopf die nicht mal genau zu dem was man machen will passen.
Dann müssen wir zwei verschiedene Sprachen sprechen.
Du kannst nicht einfach von dem logischem und deinem wissen ausgehen.
Ganz gewiss nicht, richtig. Aber von der Bereitschaft, eine Lösung zu finden und Hinweise und Tipps auch zu befolgen.
Ich denke auch Du hast Sachen wo Du nicht bescheit weißt und bist dann froh wenn dir einer ein Beispiel gibt wo Du dann genau siehst wie was funktioniert und nicht nur so ungefair.
Bei mir persönlich gibt es zwei Möglichkeiten:
1. Das jeweilige Themengebiet interessiert mich nicht; in einem solchen Fall bin ich absolut unfähig etwas zu lernen.
2. Das jeweilige Themengebiet interessiert mich; hier dagegen versuche ich sämtliche mir zur Verfügung stehenden Quellen zu studieren und Querverweisen zu folgen. Auch Trial-and-Error ist eine nicht zu verachtende Lernmethode.
Wieso schreibst Du eigentlich in dem Forum??
Weil es mir Freude bereitet, anderen mit meinem Wissen zur Seite zu stehen und im selben Atemzug ständig Neues zu erlernen.
Wenn es Dir zu wider ist einem zu helfen bzw richtig zu helfen?
Ich habe dir geholfen. Wenn dir mein Stil nicht gefällt, kann ich dir leider nicht weiterhelfen.
Und jetzt könnt ihr mich als stänker Heini verurteilen.
Warum? Weil du deine Meinung geäußert hast? Ich bitte dich.
Einen schönen Donnerstag noch.
Gruß, Ashura
Hallo Ashura,
ich verstehe deine Ansichten, auch wenn es nun manche nicht glauben wollen,
Aber durch Trial-and-Error nimmt man auch vielen Leuten den Mut und die Ausdauer. Nicht jeder hat noch nach seiner täglichen Arbeit Zeit sich 8 std. vor den PC zu setzen und probleme zu studieren. Es ist wie bei allem, man will im prinzip schnellen Erfolg, das das nicht überall möglich ist weiß ich selber.
Aber ich denke wenn Du hier und da mal ein Script zur hilfe gibst, ist der Erfolg bei den meisten Leuten die Hilfe suchen, besser als hinweise wo man wieder vor fragen steht die man nicht selber beantworten kann.
@Jürgen was nützt einem ein Link wenn man nicht weiß warum oder wieso das Script funktioniert. Es ist schwierig bei null anzufangen und dann die Links die ihr Postet zu verstehen.
Ach noch eins, ich glaube bei jedem von uns saß in der Fahrschule eine Fahrlehrer daneben, der uns nicht nur gesagt hat das auf Seite 50 steht wie der Blinkhebel funktioniert sondern er hat es uns an einem Praktischem Beispiel gezeigt.
So nun zurück zu meinem Problem das ich nun gelöst habe bis auf eine kleinigkeit.
ich möchte den neuen input Feldern mit setAttribute('maxlength','7'); sagen das nur 7 Zeichen erlaubt sind wieso geht das nicht?? Komischer weise geht dieser Befehl
setAttribute("dir","rtl");
Weiß da einer was?
Hallo Sascha321.
Aber durch Trial-and-Error nimmt man auch vielen Leuten den Mut und die Ausdauer.
Ja, das kommt sehr oft vor. Darum muss der Wille, per Trial-and-Error eine Lösung finden zu wollen, auch vom Suchenden selbst kommen. Ich persönlich betrachte diese Lösungsmöglichkeit als allerletzte Instanz zu welcher ich glücklicherweise nicht allzu oft greifen muss. Es ist nun einmal entscheidend, ob man weiß, wo man eine Lösung oder Antwort finden kann.
Es ist wie bei allem, man will im prinzip schnellen Erfolg, das das nicht überall möglich ist weiß ich selber.
Kann ich gut nachvollziehen. Aber eine mit der nötigen Ruhe und Sorgfalt erstellte Lösung ist weitaus stabiler und hält länger, als wenn sie hauptsächlich aus einem hingeworfenden Codeklumpen besteht, welcher im schlimmsten Fall nicht einmal verstanden wird.
Aber ich denke wenn Du hier und da mal ein Script zur hilfe gibst, ist der Erfolg bei den meisten Leuten die Hilfe suchen, besser als hinweise wo man wieder vor fragen steht die man nicht selber beantworten kann.
Kleine Codeschnipsel gebe ich durchaus hin und wieder einmal zum Besten, doch bei komplexeren Gebilden _muss_ das Verständnis seitens des Fragenden vorhanden sein, sonst ist jeder Aufwand umsonst.
So nun zurück zu meinem Problem das ich nun gelöst habe bis auf eine kleinigkeit.
ich möchte den neuen input Feldern mit setAttribute('maxlength','7'); sagen das nur 7 Zeichen erlaubt sind wieso geht das nicht??
Nun, als erstes testest du offenbar im IE, welcher hier eine Eigenart hat.
Erst einmal zum Verständnis: jedes HTML-Elementobjekt in JS verfügt jederzeit über alle Eigenschaften, die ihm im HTML als Attribut zur Verfügung stehen. Erzeugst du also ein Eingabefeld, so besitzt es also bspw. bereits ein type-Attribut.
Du kannst also einfach der jeweiligen JS-Eigenschaft den jeweiligen Wert zuweisen.
Hier also:
[input-Knoten].maxlength = 7;
Und nun zur Eigenart des IEs: wenn ein HTML-Attribut direkt gesetzt werden kann, weigert er sich, genau dasselbe bei setAttribute durchzuführen. Er fordert hier also den Weg des geringsten Widerstandes.
Komischer weise geht dieser Befehl
setAttribute("dir","rtl");
Das http://de.selfhtml.org/html/referenz/attribute.htm#input@title=input-HTML-Elementobjekt verfügt ja auch nicht über eine solche Eigenschaft. Es gibt aus Sicht des IEs also keine einfachere Möglichkeit, diese zu setzen.
Einen schönen Donnerstag noch.
Gruß, Ashura
Hallo Ashura,
irgendwie geht das nicht, wie muss ich das einfügen?
//newText.setAttribute("maxlength","7");
[input-Knoten].maxlength = 7;
newText.setAttribute("dir","rtl");
cell1.appendChild(newText);
Was muss ich für input Knoten eingeben??
Lieber Sascha.
irgendwie geht das nicht, wie muss ich das einfügen?
Ich bitte dich darum, einmal die von mir verlinkte Seite aufmerksam zu lesen.
Ich habe dich nicht ohne Grund auf http://de.selfhtml.org/javascript/objekte/document.htm#create_element@title=createElement verwiesen. Schließlich möchtest du keinen Textknoten sondern einen Elementknoten in die Zelle einfügen. Eine kleine Beschreibung kannst du unter http://de.selfhtml.org/javascript/objekte/node.htm#node_type@title=nodeType finden. Dies hat aber nur informativen Charakter und hat mit deinem Vorhaben nichts zu tun.
Was muss ich für input Knoten eingeben??
Die Referenz auf das von dir erzeugte input-Element.
(Anders ausgedrückt: die Variable, in der du es kurzzeitig ablegst, bevor du es in die Zelle einfügst.)
Und bedenke, was ich bzgl. der Wertzuweisung von Eigenschaften und dem IE schrieb.
Einen schönen Freitag noch.
Gruß, Ashura
Hallo Ashura,
nein ich will dich nicht verarschen, sorry wenn es dir so vorkommt, aber ich wußte nicht das die eckige Klammer und das input-knoten eine Variable dartsellen soll.
Habe es aber vorhin selber rausgefunden könnte aber noch nicht zurück schreiben.
Es klappt jetzt genauso wie ich es wollte vielen Dank.
Hallo Sascha321.
nein ich will dich nicht verarschen, sorry wenn es dir so vorkommt, aber ich wußte nicht das die eckige Klammer und das input-knoten eine Variable dartsellen soll.
Gut, ich werde daran denken, sollte ich irgendwann einmal etwas Ähnliches erneut schreiben.
Es klappt jetzt genauso wie ich es wollte vielen Dank.
Das freut mich allerdings.
Einen schönen Freitag noch.
Gruß, Ashura
Hallo Ashura,
Ich schicke dir mal das Javascript, die Variable ist wohl irre führend habe Sie nur so gelaassen, ich erstelle ja jetzt ein Element.
<script type="text/javascript">
var breite =new Array("6","16","10","5","5","5","5","5","5");
//var breite =1
function addRowToTable()
{
var tbl = document.getElementById('Tabelle');
var lastRow = tbl.rows.length;
var iteration = lastRow;
var row = tbl.insertRow();
var cell1 = row.insertCell();
cell1.className = "cell02g";
var newText = document.createElement("input");
newText.setAttribute("type","text");
newText.setAttribute("size","1");
newText.setAttribute("align","center");
newText.setAttribute("value",iteration);
cell1.appendChild(newText);
for(i=0;i<breite.length;i++)
{
var cell1 = row.insertCell();
cell1.className = "cell02g";
var newText = document.createElement("input");
newText.setAttribute("type","text");
newText.setAttribute("size",breite[i]);
//newText.setAttribute("maxlength","7");
[newText.setAttribute].maxlength = 7;
newText.setAttribute("dir","rtl");
cell1.appendChild(newText);
}
}
</script>
Das ist also die Funktion die ich geschrieben habe, und bis auf das maxlength ist mir die Funktion auch klar. Aber ich finde kein Beispiel wie ich das maxlength anders setzen soll. Ich habe das mit dem IE schon verstanden das er es nicht für nötig hält das zu ändern, da er ja schon eine maxlength angabe hat. Aber wie zwinge ich den IE dazu das er es ändert?
Danke
Hallo Sascha321.
Aber ich finde kein Beispiel wie ich das maxlength anders setzen soll.
Bei allem gebürtigem Respekt fühle ich mich langsam von dir veralbert.
Liest du überhaupt meine Postings? Ich habe dir in diesem geschrieben, wie du alternativ _den Wert der jeweiligen Eigenschaft direkt zuweisen_ kannst.
Das „[input-Knoten]“ sollte hierbei nur als Platzhalter dienen und muss durch den Namen der Variable ersetzt werden, die die Referenz zum von dir erzeugten input-Element darstellt; bei dir also „newText“.
Einen schönen Freitag noch.
Gruß, Ashura
Hallo Sascha321,
ich verstehe jetzt nicht, warum du dich aufregst. Ich habe dir eine Seite verlinkt, auf der Tabellen dynamisch erzeugt werden. Hättest du dir die Seite genauer angesehen, hättest du sogar den Teil gefunden, der in Teile der Tabelle Input-Elemente setzt, sogar zentriert.
Ashura hat ein Script gepostet, dass eine Tabelle mit den Tabellenmethoden dynamisch erzeugt _und_ Zeilen anhängt. Die Links zu den Handbuchseiten wurden dir ebenfalls präsentiert.
Und ich finde, Ashura hat viel Geduld mit dir gehabt, im Gegensatz zu mir.
Gruß, Jürgen