innerHTML Problem IE
Karl
- javascript
Hallo,
ich versuche eine Seite dynamisch zu verändern.
Ich habe ein div-Element, welches Text bekommen soll.
Gebe ich den Inhalt des div-Elements aus, so habe ich keine Probleme.
Wenn ich aber das div Element setzen möchte bekomme ich im IE einen Laufzeitfehler.
Hier der Code:
alert(document.getElementById(idDiv).innerHTML);
document.getElementById(idDiv).innerHTML = "Test";
Danke für euere Hilfe
Karl
Hallo Karl,
das verstehe ich nicht. Außer den MAC-IEs kenne ich keinen DOM-fähigen Browser, der mit innerHTML Probleme hat. Poste mal mehr Code oder einen Link.
Gruß, Jürgen
Hallo Karl,
das verstehe ich nicht. Außer den MAC-IEs kenne ich keinen DOM-fähigen Browser, der mit innerHTML Probleme hat. Poste mal mehr Code oder einen Link.
Einen Link posten geht nicht, da es bei zur Zeit lokal läuft.
Mehr Code kann ich nicht posten, denn dieser sagt alles aus.
Hier der ursprüngliche Code:
function elem(id)
{ return document.getElementById(id); }
var packageTable = top.elem('Package');
newPackage = "text Text Ttex";
alert(packageTable.innerHTML+newPackage);
packageTable.innerHTML = packageTable.innerHTML+newPackage;
alert('Test');
Das alert kommt nicht mehr und vorher wirft mir der IE eine Fehler.
Gruß
Karl
Hallo Karl,
das verstehe ich nicht. Außer den MAC-IEs kenne ich keinen DOM-fähigen Browser, der mit innerHTML Probleme hat. Poste mal mehr Code oder einen Link.
Einen Link posten geht nicht, da es bei zur Zeit lokal läuft.
Mehr Code kann ich nicht posten, denn dieser sagt alles aus.
Hier der ursprüngliche Code:function elem(id)
{ return document.getElementById(id); }var packageTable = top.elem('Package');
newPackage = "text Text Ttex";
alert(packageTable.innerHTML+newPackage);
packageTable.innerHTML = packageTable.innerHTML+newPackage;
alert('Test');Das alert kommt nicht mehr und vorher wirft mir der IE eine Fehler.
Hi Karl,
kann es sein, dass du eine Tabelle damit ansprichst. Die sind nämlich nur-lesend!
Grüße
Andi
Hi Karl,
kann es sein, dass du eine Tabelle damit ansprichst. Die sind nämlich nur-lesend!
Hi Andi,
genau! Das wars. Der IE bringt mich langsam zur Verzweiflung.
Danke ung Gruß
Karl
Hallo Andi,
kann es sein, dass du eine Tabelle damit ansprichst. Die sind nämlich nur-lesend!
Quatsch! Das gilt nur für den MAC-IE! In http://www.j-berkemeier.de/TableSort.html werden Tabellenfelder mit innerHTML gelesen und beschrieben.
Gruß, Jürgen
Hallo JürgenB,
Quatsch! Das gilt nur für den MAC-IE! In http://www.j-berkemeier.de/TableSort.html werden Tabellenfelder mit innerHTML gelesen und beschrieben.
Also ich kann das Problem durchaus nachvollziehen; während es ohne weiteres möglich ist, das innerHTML einzelner Zellen zu ändern, scheint es im IE6 und Mozilla 1.7.2 (unter Win98) unmöglich zu sein TABLE, TBODY, TR in dieser Eigenschaft zu verändern. Mit Opera 7.54 geht es hingegen, aber auch nur unter Verwendung des All-Objekts:
<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
<title>Mit innerHTML Tabelle ändern</title>
<script type="text/javascript" language="JavaScript">
[code lang=javascript]
function textAendern () {
document.getElementByID('cambio').innerHTML='<tbody><tr><td>Hier steht jetzt ein anderer Text in nur einer Zelle</td></tr></tbody>';
}
</script>
</head>
<body >
<table id="cambio" border="1">
<tbody>
<tr>
<td>Hier steht ein Text</td>
<td>Dieser<a href="#" onclick="textAendern()">Ändern-Link</a> steht in einer zweiten Zelle</td>
</tr>
</tbody>
</table>
</body>
</html>
[/code]
Gruß Gernot
Hallo Gernot Back,
document.getElementByID('cambio').innerHTML='<tbody><tr><td>Hier steht jetzt ein anderer Text in nur einer Zelle</td></tr></tbody>';
ok. Meine Aussage bezog sich nur auf das Ändern von Feldinhalten, also von TDs. Für ganze Tabellenstrukturen verwende ich createElement und appendChild. Der IE scheint also Probleme damit zu haben, per innerHTML den DOM-Baum in Tabellen zu verändern.
Gruß, Jürgen
Hallo,
var packageTable = top.elem('Package');
gibt es denn im Top Frame die function elem?
gruss
Hallo Karl,
Was macht die Funktion elem?
Wie sieht der HTML-Teil aus?
Welchen IE unter welchem System benutzt Du?
Gruß, Jürgen
Hi,
das verstehe ich nicht. Außer den MAC-IEs kenne ich keinen DOM-fähigen Browser, der mit innerHTML Probleme hat.
BTW: Mein Ticker funktioniert übrigens auch auf dem Mac-IE. Und da er nur über die Nodes geht, wenn innerHTML gar nicht existiert/funktioniert, bleibt nur die Schlußfolgerung, daß innerHTML sehr wohl auch mit dem Mac-IE schreibend funktioniert.
Allerdings besteht der Tickertext ja nicht aus Code, sondern nur aus Text. Vielleicht hat er ja nur beim Schreiben von Code Probleme. Zumindest aber dein Workaround-Hinweis für reinen Text ist also auf jeden Fall unnötig.
Gruß, Cybaer
Hallo Cybaer,
die Probleme mit innerHTML bei den MAC-IEs habe ich bisher auch nur bei Tabellenfeldern (td) bemerkt.
Gruß, Jürgen
Hi,
Außer den MAC-IEs kenne ich keinen DOM-fähigen Browser, der mit innerHTML Probleme hat.
Aber nur dann, wenn er komplette Tabellen in Divs schreiben soll.
Gruesse, Joachim
Hallo Joachim,
Außer den MAC-IEs kenne ich keinen DOM-fähigen Browser, der mit innerHTML Probleme hat.
Aber nur dann, wenn er komplette Tabellen in Divs schreiben soll.
Nein. Ich verändere in meinem Tabellensortierer die Feldinhalte mittels innerHTML. Das geht meines Wissens nach in allen DOM-fähigen Browsern. Nur der MAC-IE stürtzt ab.
Gruß, Jürgen
Hi Jürgen,
Nur der MAC-IE stürtzt ab.
was zunaechst mal nicht heisst, dass er es nicht kann. Aber ich gebe Dir Recht, bei _komplexeren_ Schreibereien neigen manche Versionen (afaik 5.1, 5.0 kam besser zurecht) zu Abstuerzen.
Dennoch _kann_ er es, ich erinnere mich, dass ich einige innerHTML Geschichten unter OS-Classic gemacht habe.
Gruesse, Joachim
Hallo Joachim,
offensichtlich gibt es Fälle, wo innerHTML auch beim MAC-IE funktioniert. Siehe Posting von Cybaer https://forum.selfhtml.org/?t=105492&m=652345. Das unangenehme ist nur, dass der MAC-IE vorgibt, innerHTML zu können und einen so in die Falle tappen lässt.
Gruß, Jürgen
Hi Jürgen,
Das unangenehme ist nur, dass der MAC-IE vorgibt, innerHTML zu können und einen so in die Falle tappen lässt.
naja, ich mache eigentlich das meiste mit Dom... der Rest ist Test ;-)
Gruesse, Joachim
Hallo Karl,
Ich habe ein div-Element, welches Text bekommen soll.
Gebe ich den Inhalt des div-Elements aus, so habe ich keine Probleme.
Da es sich bei innerHTML ja ursprünglich um eine Eigenschaft des document.all-Objekts handelt, die andere Browser für document.getElementByID() übernommen haben, könnte ich mir vorstellen, dass es im IE günstiger ist, das ganze gleich über "all" anzusprechen, da getElementByID dort vermutlich ohnehin intern erst einmal wieder in all verwandelt werden muss.
alert(document.getElementById(idDiv).innerHTML);
document.getElementById(idDiv).innerHTML = "Test";
Gruß Gernot