Archivlink: javarea.de Forum > JavaScript > Tabellenzelle anlegen
Vollständigen Link anzeigen: javarea.de Forum > JavaScript > Tabellenzelle anlegen
Pages: [1]
2
... nächste »
... Letzte »
| geschrieben von Eppi am 06.04.2006 - 12:03 |
Hallo,
gibt es noch eine andere möglichkeit html-quellcode in einen node zu schreiben als innerHTML? ich hab mal gehört, das man innerHTML nicht verwenden soll, hab allerdings das problem, das ich sonst den inhalt, den ich aus einem ganz anderen knotentyp auslese nicht in den neu generierten elementknoten reinbekomme.
gruß, paul |
| geschrieben von Eppi am 06.04.2006 - 16:51 |
ja, nur muß ich mich erstmal bis an die stelle wo ich es erstellen möchte durchhangeln. das durchhangeln ist zwischen ie und firefox leider sehr unterschiedlich da der firefox überall noch textknoten erkennt, die ie & opera nicht als solchen sehen.
gruß, paul |
| geschrieben von Micha am 06.04.2006 - 16:53 |
| Du kennst getElementById/sByTagName/sByName ? |
| geschrieben von Eppi am 06.04.2006 - 16:59 |
ja, kenne ich. nur leider muß ich dann für jedes element, welches ich ansprechen möchte eine id, oder einen namen vergeben.
gruß, paul |
| geschrieben von Micha am 06.04.2006 - 17:01 |
Nö,
| Zitat | | |
getElementById/sByTagName/sByName
----------------------^ |
|
| geschrieben von Eppi am 06.04.2006 - 17:08 |
da spuckt er mir aber alle tds aus, oder? da hier tabellen verschachtelt sind und ich nicht weiß wieviele tds in den untertabellen enthalten sind, hilft mir das leider nicht weiter.
gruß, paul |
| geschrieben von Micha am 06.04.2006 - 17:14 |
ggf. wäre es mal mit einem Beispiel besser zu lösen, als immer eine Antwort als Frage zu formulieren....
Zunächst einmal: Ja, alle enthaltenen TD's sind dabei; aber ich kann auch ByTagName("table") abfragen und erhalte die Untertabellen inklusive der TD's....
Micha |
| geschrieben von Eppi am 06.04.2006 - 17:31 |
ja ein beispiel wäre wohl klasse. allerdings ist das bei mir alles etwas schwieriger, da dies über mehrere dateien wandert. das eine ist php das andere die template datei dazu. dann eine js-datei die das ergebnis des ganzen bearbeitet usw. vielleicht sollte ich einfach mal eine testinstallation des cms aufsetzen damit ihr es konkreter seht. im moment gilt das beispiel
| HTML-Quelltext | 1:
2:
3:
4:
5:
6:
7:
| <table id="test">
<tr>
<td>hier vielleicht eine untertabelle mit x tr und td</td>
<td>diese tabellenzelle möchte ich ersetzen oder neu anlegen</td>
hier könnten auch noch weitere tds folgen
</tr>
</table> |
ich weiß also nur, das ich das zweite td ansprechen möchte. im moment hab ich es so gelöst:
| HTML-Quelltext | 1:
2:
3:
4:
5:
6:
7:
8:
| var el = document.getElementById('test');
el = (el.nodeType == 1) ? el.firstChild : el.nextSibling.firstChild;
var td = document.createElement('td');
td.className = 'info';
td.innerHTML = req.responseXML.getElementsByTagName('content')[0].firstChild.nodeValue;
if (el.childNodes.length == 5 || el.childNodes.length == 2) {
el.replaceChild(td, (el.firstChild.nodeType == 1) ? el.firstChild.nextSibling : el.firstChild.nextSibling.nextSibling.nextSibling);
} else el.appendChild(td); |
gruß, paul |
| geschrieben von zippy am 06.04.2006 - 17:48 |
Wenn ich mich zu eurem Ärger einschalten darf:
Ich kann zwar nichts beitragen, aber finde diesen Thread HÖCHST INTERESSANT! Musste ich einfach loswerden. Tschullichung...
*zier*
Schließt an die alten Zeiten der Javarea an. Also, ich finde, man sollte den Micha zum Mod adeln, oder so...# |
| geschrieben von Micha am 06.04.2006 - 18:12 |
Hallo,
Versuche mal:
| HTML-Quelltext | 1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
| <table id="test">
<tr>
<td>
<table>
<tr>
<td>bla</td>
</tr>
<tr>
<td>blu</td>
</tr>
</table>
</td>
<td>diese tabellenzelle möchte ich ersetzen oder neu anlegen</td>
<td>hier könnten auch noch weitere tds folgen</td>
<td>hier könnten auch noch weitere tds folgen</td>
<td>hier könnten auch noch weitere tds folgen</td>
<td>hier könnten auch noch weitere tds folgen</td>
</tr>
</table>
for (var i=0; i<document.getElementById("test").getElementsByTagName("td").length; i++){
window.alert(document.getElementById("test").getElementsByTagName("td")[i].parentNode.parentNode.parentNode.id)
} |
Micha |
| geschrieben von Eppi am 06.04.2006 - 18:40 |
äh ja und? weiß jetz nicht was mir dieses script sagen soll. um vielleicht mal zur ursprungsfrage zurückzukommen. ist innerhtml wirklich flasch? also ratet ihr davon ab es zu verwenden?
gruß, paul |
| geschrieben von Micha am 06.04.2006 - 18:53 |
Hallo,
Du willst im zweiten TD Deiner "Haupt"Tabelle etwas verändern. Du hast gesagt, das es mit getElementsByTagName("td") nicht geht, da auch andere/innere Tabellen betroffen sind. Da ich das für Dein Problem hielt - bei so vielen durcheinander gehauenen Threads sieht ja keiner mehr durch - habe ich Dir gezeigt, wie Du das X-te TD aus der Haupttabelle mit der ID=test bekommen kannst.
Ersetze es nun mit replaceChild() oder füge mit appendChild() einen weiteren Knoten hinzu.
innerHTML ist kein DOM-Objekt; ab XHTML ist das schreiben damit nicht mehr möglich...
Micha |
| geschrieben von Eppi am 06.04.2006 - 19:11 |
na wenn ich dein beispielscript asuführe souckt er mir jede menge sachen aus und auch ein paar mal "test". jetzt weiß ich aber immer noch nciht wann es die richtige spalte ist? also genau die zweite. auf der anderen seite ist es doch auch blöd mit schleifen arbeiten zu müssen die alles nur verlangsamen. besser wäre es doch das element ganz konkret anzusprechen. ich hab ja eine lösung gefunden, hab sie auch gepostet. nur hab ich da halt das problem das ich bei x funktionen die ich noch abuen werde und die alle andere anforderungen haben jedesmal diese ausnahmen für ie bzw. firefox bearbeiten muß. daher suche ich auf der einen seite nach einer klasse die mir das gleiche ansprechen für alle browser ermöglicht und das zweite problem ist ein anderes. deshalb dieser thread hier. die frage aus meinem ersten post ist leider noch nciht beantwortet :-(
ich möchte html-quellcode, welche ich in einem xhtml baum nachlade in eine bestehende tabelle schieben. elementa.nodeValue = nachladeelement.nodeValue funktioniert leider nur so das er mir dann den html-quellcode als text ausgibt.
gruß, paul |
| geschrieben von Micha am 06.04.2006 - 19:53 |
|
|