innerHTML -Problem
Otsche
- javascript
0 derletztekick0 Otsche0 derletztekick0 Otsche0 derletztekick0 derletztekick0 Otsche
0 derletztekick
0 MudGuard
Hallo.
habe in einer Tabelle verschiedene td's mit id='_1' id='_2'. Diese Tabelle wird von einem Script gebildet, jedes Feld hat ne eigene Nummer.
Nun würde ich gerne mit einem anderen Script per innerHTML diese Felder überschreiben, geht aber nicht, da ich auf das all-Objekt variabel zugreifen will:
var start;
start=((hohe-1)/2)*breite+breite/2;
var start2;
start2='_'+start;
document.all.start2.innerHTML="st";
ich bekomme als Fehlermeldung start2 kein Objekt blabla... wie kann ich es schaffen, dass das script blickt, dass start2 ne Variable ist? oder hat mir jemand n andern tipp wie ich die einzelnen Felder überschreiben kann. Die sollen immer nach merkwürdigen Mathematischen Mustern überschrieben werden, darum ist es ganz wichtig, dass jedes ne aufsteigende Zahl hat
Hallo Otsche,
Nun würde ich gerne mit einem anderen Script per innerHTML diese Felder überschreiben, geht aber nicht, da ich auf das all-Objekt variabel zugreifen will:
Das würde ich zwar nicht so machen, sondern entweder globale Variablen bei der Erstellung der Tabelle nutzen um diese auch im zweiten Script schon zur Verfügung zu haben oder mit getElementsByTagName("td") mir (nach Prüfung natürlich ;-)) Zugriff verschaffen. Wenn Ich mir Dein Scriptauszug ansehe, dann fällt auf,
var start;
start=((hohe-1)/2)*breite+breite/2;
var start2;
start2='_'+start;
document.all.start2.innerHTML="st";
das Du im Prinzip den selben Denkfehler machst, wie Sebastian drei Threads tiefer.
ich bekomme als Fehlermeldung start2 kein Objekt blabla... wie kann ich es schaffen, dass das script blickt, dass start2 ne Variable ist?
Sei Dir Sicher, das hat es schon verstanden. Du erwartest aber etwas anderes.
Die sollen immer nach merkwürdigen Mathematischen Mustern überschrieben werden, darum ist es ganz wichtig, dass jedes ne aufsteigende Zahl hat
Wenn Du die TD's in einem Array hast, benötigst Du die ID's nicht mehr und kannst dieses bequem duchlaufen.
Mit freundlichem Gruß
Micha
also geht das einfach nicht?
<td id='hase'>blabla</td>
variable="hase";
document.all.variable.innerHTML="nicht mehr blabla";
du meintest, das script blickt, dass mit variable hier hase gemeint ist, aber in meinem Fall tut es das nicht... und wenn ich mit arrays nur anfang platzt mir schon der kopf, ich blick keine arrays die n paar hundert werte haben, und wie ich mit denen rechnen soll blick ich auch nicht (bin zu neu, und brauchs zu schnell. und bin ich nicht gerade der intelligenteste)
Hallo Otsche,
also geht das einfach nicht?
<td id='hase'>blabla</td>
variable="hase";
document.all.variable.innerHTML="nicht mehr blabla";
Nein, da Du ein Element Names "variable" ansprechen möchtest. JS meldet, da dies nicht vorhanden ist, einen Fehler.
Es würde aber gehen, wenn Du zB document.getElementsById("hase").innerHTML = "Dein Text"
Da Du aber sagtest, dass Du die TD's automatisch erstellst und mit einer nummerischen ID belegst, wäre es wohl besser dies global in einem Array zu speichern. Dann wäre der Index des Arrays gleich Deiner momentanen ID.
Auch wäre wie gesagt ElementsByTagNAme möglich. Bitte prüfe unbedingt die Existenz dieser Methode!
du meintest, das script blickt, dass mit variable hier hase gemeint ist, aber in meinem Fall tut es das nicht...
Es setzt nicht den Wert der Variabel ein. Prüfe die Existenz mit alert(variable);
Ferner prüfe die Ausgabe von alert(typeof(document.all.variable));
wenn ich mit arrays nur anfang platzt mir schon der kopf, ich blick keine arrays die n paar hundert werte haben,
Aber der Index wäre/ist identisch mit Deiner ID und da "siehst Du ja auch durch".
Mit freundlichem Gruß
Micha
document.getElementsById("hase").innerHTML = "Dein Text";
Funktioniert nicht. Fehler: Das Objekt unterstützt diese Eigenschaft oder Methode nicht.
Das mit dem Array ist ja ganz interessant, aber es hat nicht funktioniert, weil die td's ja nicht automatisch überschrieben werden, wenn sich ein wert des arrays ändert. Hier also meine Frage dazu:
Also ich bilde nun beispielsweise ein Array. In diesem Array ist für den Bezeichner 0 html Code gespeichert, der innerhalb des ersten Feldes (td) der Tabelle angezeigt wird. Der Bezeichner 1 beinhaltet Quelltext für das 2te Feld etc... in der Tabelle wird dann einfach in jedem <td> der entsprechende Wert des Arrays abgerufen, soweit kein Problem. Nun will ich aber, dass durch eine Aktion des Benutzers (in der Regel das klicken auf ein Bild) ein <td> einen neuen inhalt annimmt. Es wird folglich der entsprechende Wert des Arrays anhand des Bezeichners überschrieben, aber dadurch wird ja noch lange nicht die Tabelle überschrieben, wie stelle ich dann das an? Es muss dann ja mit jeder Änderung (und ich red von vielen Änderungen) die komplette Tabelle überschrieben werden, oder?
Hallo Otsche,
document.getElementsById("hase").innerHTML = "Dein Text";
-----^
Mist, ein S zuviel, Entschuldigung!
Das mit dem Array ist ja ganz interessant, aber es hat nicht funktioniert, weil die td's ja nicht automatisch überschrieben werden, wenn sich ein wert des arrays ändert.
Doch, wenn Du in dem Array die TD-Objekte speicherst geht das.
Also ich bilde nun beispielsweise ein Array. In diesem Array ist für den Bezeichner 0 html Code gespeichert, der innerhalb des ersten Feldes (td) der Tabelle angezeigt wird.
Das wäre natürlich auch möglich aber so meinte ich es nicht.
Wie erstellst Du das TD? Ich vermute mit createElement("td").
var array = new Array();
array[0] = document.createElement("td");
array[0].appendChild(document.createTextNode("Test der 1. Zelle"));
array[1] = document.createElement("td");
array[1].appendChild(document.createTextNode("Test der 2. Zelle"));
...
Du hast diese TD's korrekt eingehangen. Wenn Du nun das zweite TD ändern willst, dann so, wie Du den Text beim erstenmal zugewiesen hast:
array[1].appendChild(document.createTextNode("Neuer Text"));
mehr nicht.
Über innerHTML wäre es dann:
array[1].innerHTML("Neuer Text"));
Verständlich?
Mit freundlichem Gruß
Micha
Hallo,
Ich sollte ins Bett gehen...
Wenn Du nun das zweite TD ändern willst,
<del>dann so, wie Du den Text beim erstenmal zugewiesen hast:</del> <ins>dann mit replaceData()</ins>
Mit freundlichem Gruß
Micha
Danke, also so wie ichs zunächst vorhatte funktioniert es nun einigermaßen, über deine Array Variante denke ich nun noch n weilchen nach... Danke
Hallo,
Ich meinte natürlich:
document.getElementsById(variable).innerHTML = "Dein Text"
Mit freundlichem Gruß
Micha
Schon klar, funktioniert aber auch nicht... Fehler hab ich in meiner letzten Antwort schon geschrieben.
Hallo,
Ich meinte natürlich:
document.getElementsById(variable).innerHTML = "Dein Text"
Dadurch wird's auch nicht richtiger, es sollte wohl so heißen:
document.getElementById(variable).innerHTML = "Dein Text"
Oder wieviel Elemente dürfen bei Dir die gleiche ID habe?
Mit freundlichem Gruß
Nolava
Hallo Nolava,
Dadurch wird's auch nicht richtiger, es sollte wohl so heißen:
Frühaufsteher? Ich weiß und habe es bereits gestern berichtigt
Mit freundlichem Gruß
Micha
Hi,
habe in einer Tabelle verschiedene td's mit id='_1' id='_2'.
Warum verwendest Du ungültige id-Werte?
var start2;
start2='_'+start;
document.all.start2.innerHTML="st";
Warum document.all? Warum nicht document.getElementById()?
Wenn schon, müßte es document.all[start2] sein, denn Dein objekt soll ja nicht den Namen start2 haben, sondern den Namen, der in der Variable namens start2 steht.
ich bekomme als Fehlermeldung start2 kein Objekt blabla...
Logisch.
wie kann ich es schaffen, dass das script blickt, dass start2 ne Variable ist?
Indem Du die Variable verwendest.
cu,
Andreas
Hallo MudGuard,
habe in einer Tabelle verschiedene td's mit id='_1' id='_2'.
Warum verwendest Du ungültige id-Werte?
Sind sie das?
Mit freundlichem Gruß
Micha
hi,
habe in einer Tabelle verschiedene td's mit id='_1' id='_2'.
Warum verwendest Du ungültige id-Werte?
Sind sie das?
gruß,
wahsaga
Hallo wahsaga,
Oh, komisch (oder doch nicht?) Ich hätte es nicht in frage gestellt, wenn ich es nicht getestet hätte - ich war vll etwas voreilig.
Der W3C Validator kann keinen Fehler finden in Zeile 67.
Mit freundlichem Gruß
Micha
Hi,
Warum verwendest Du ungültige id-Werte?
Sind sie das?
»»Ja.
hatten wir in diesem Thread schon die Frage geklärt, ob wir über HTML oder XHTML reden, wo die ID in dieser Form gültig ist?
MfG
Rouven
hi,
hatten wir in diesem Thread schon die Frage geklärt, ob wir über HTML oder XHTML reden, wo die ID in dieser Form gültig ist?
Wo kann man letzteres nachlesen?
gruß,
wahsaga
Hi,
Wo kann man letzteres nachlesen?
In dieser Spezifikation bzw. ihrem englischen Pendant findet sich der Hinweis, dass ID vom Typ ID definiert wurde. Die entsprechende DTD bestätigt das.
So, eine ID wiederum muss den Namenskonventionen entsprechen.
Name ist definiert als Buchstabe, _ oder : gefolgt von beliebigen Name-Chars.
Fehler in der Ableitung?
MfG
Rouven
hi,
Fehler in der Ableitung?
Nein, ich denke nicht.
Danke für den Hinweis.
gruß,
wahsaga
Hallo,
Im Zusammenhang mit Linkankern erwähnen die Kompatibilitätsrichtlinien:
»Note that the collection of legal values in XML 1.0 Section 2.3, production 5 is much larger than that permitted to be used in the ID and NAME types defined in HTML 4. When defining fragment identifiers to be backward-compatible, only strings matching the pattern [A-Za-z][A-Za-z0-9:_.-]* should be used.«
Das gilt meiner Lesart nach im Grunde für alle id-Attribute, schließlich ist id="_bla" nicht kompatibel mit HTML.
Mathias