AJAX (Asynchronous JavaScripting and XML) Forum
   Forum über „Asynchronous JavaScripting and XML“ und Web 2.0    AJAX Forum AJAX Blog AJAX Wiki AJAX Bücher

Zurück   AJAX (Asynchronous JavaScripting and XML) Forum > Für Entwickler > JavaScript


Digitalkamera
Antwort
 
LinkBack (1) Themen-Optionen
Alt 02.06.2006, 11:01   1 links from elsewhere to this Post. Click to view. #1 (permalink)
Neuer Benutzer
 
Registriert seit: 18.01.2006
Beiträge: 7
Standard insertBefore läuft in IE nicht

Morschen zusammen!

Also ich hoffe jemand kann mir helfen, weil mein kleines Problem reizt mich langsam bis auf´s Mark

Ich möchte ein neues Objekt in meinen DOM-Baum einfügen (einen P -Tag) mit einem TextNode der den Inhalt message hat. Dazu benutze ich die Funktion insertBefore().


Hier der HTML-Code in welches der Node eingefügt werden soll:

Code:
<div id="box">
    <h2>Live-Ticker für die WM ole,ole,ole</h2>
    <div id="content"></div>
</div>
Hier mal der JS-Code:
Code:
 this.loadDiv = document.getElementById("content");

var zweitesElement = "Inhalt 1";
var drittesElement = "Inhalt 2";
var viertesElement = "Inhalt 3";
var fuenftesElement = "Inhalt 4";

message = "Zeit: "+zweitesElement +" Min: "+drittesElement+" Nachricht: "+viertesElement+" Spielstand: "+fuenftesElement;

var text = document.createElement("p");
var inhalt = document.createTextNode(message);
var position = this.loadDiv.firstChild;

//Ojekt in den DOM-Baum einfügen
this.loadDiv.insertBefore(text,position);

//Dann den Text-Node angehängt		
text.appendChild(inhalt);
Im Firefox funktioniert das spitze nur im IE fügt er mir keinen Knoten ein und ich hab langsam keinen Ahnung mehr warum der Inhalt in message ist vorhanden die Poistionen sind im IE und Firefox identisch nur er fügt im IE nichts ein!

Das ganze ist eine Funktion die immer einen Knoten einfügt wenn im XML ein neuer Knoten hinzugekommen ist, diese Funktion wird zeitgesteuert aufgerufen.

Danke schon mal für die Hilfe und ich hoffe irgend jemand hatte dieses Problem auch schon.
Neo23 ist offline   Mit Zitat antworten
Alt 02.06.2006, 11:24   #2 (permalink)
Erfahrener Benutzer
 
Registriert seit: 14.03.2006
Beiträge: 256
Standard

Code:
var position = this.loadDiv.firstChild;

//Ojekt in den DOM-Baum einfügen
this.loadDiv.insertBefore(text,position);
Dein HTML Tag mit der ID Content besitzt beim 1. durchlauf noch kein Kind, das könnte evl. im IE probleme geben versuch mal beim 1. Durchlauf nur ein append
HStev ist offline   Mit Zitat antworten
Alt 02.06.2006, 11:38   #3 (permalink)
Neuer Benutzer
 
Registriert seit: 18.01.2006
Beiträge: 7
Standard

Hi HStev;

der Tag mit der ID Content hat schon Kindelelmete bei diesem Duchlauf. Da nur die neusten Elemete aus dem XML ausgelesen und darstgestellt werden sollen, ist das ganze in einer IF-Else Scheife untergebracht. Der komplette Code würde aber hier den Rahmen sprengen, deshalb hab ich mich auf den Code-Schnipsel beschränkt.

Wenn ich den Knoten mit appendChild an das Ende einfüge funktioniert das super, ich bekomme ihn nur nicht im IE 5.5 an den Anfang.

Code:
var text =document.createElement("p");
this.loadDiv.appendChild(text);
text.appendChild(document.createTextNode(message));
Vielleicht noch eine andere Idee?
Neo23 ist offline   Mit Zitat antworten
Alt 02.06.2006, 11:57   #4 (permalink)
Erfahrener Benutzer
 
Registriert seit: 14.03.2006
Beiträge: 256
Standard

Grad probiert läuft im IE einwandrei das Problem muss woanders liegen...

Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN">
<html>
<head>
  <meta content="text/html; charset=ISO-8859-1"
 http-equiv="content-type">
  <title></title>
  <script language="javascript" type="text/javascript">
	function InsertBefore()
	{
		this.loadDiv = document.getElementById("content"); 
		var text = document.createElement("p");
		var inhalt = document.createTextNode("test");
		var position = this.loadDiv.firstChild; 
		//Ojekt in den DOM-Baum einfügen
		this.loadDiv.insertBefore(text,position);

		//Dann den Text-Node angehängt      
		text.appendChild(inhalt); 
		
		setTimeout("InsertBefore()", 2000);
	}
	setTimeout("InsertBefore()", 2000);
  </script>
</head>
<body>
<div id="content"></div>
</body>
</html>
HStev ist offline   Mit Zitat antworten
Alt 02.06.2006, 12:14   #5 (permalink)
Neuer Benutzer
 
Registriert seit: 02.02.2006
Beiträge: 9
Standard

Ich kann das bestätigen IE 6.0.2900 rennt problemlos. die neuen Nodes werden am Anfang eingefügt.
thkl ist offline   Mit Zitat antworten
Alt 02.06.2006, 14:21   #6 (permalink)
Neuer Benutzer
 
Registriert seit: 18.01.2006
Beiträge: 7
Standard

ok, ich bin auf der Suche. Danke für die schnelle Hilfe!!!!
Neo23 ist offline   Mit Zitat antworten
Antwort

Lesezeichen


Themen-Optionen

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


LinkBacks (?)
LinkBack to this Thread: http://www.ajax-community.de/javascript/3188-insertbefore-laeuft-ie.html
Erstellt von For Type Datum
AJAX-Community Blog » Wie geil Internet Explorer sein könnte This thread Pingback 05.01.2007 08:43


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:23 Uhr.