Mabubu: replaceChild aus IFrame

Beitrag lesen

Hi,

ich habe die Funktion wie folgt umgeschrieben, aber es passiert nichts, außer, dass er die alte tabelle löscht :(

  
function updateElement(id) {  
	if(id) {  
		var oldId = id+'__old';  
	  
		var sourceElement = document.getElementById(id);  
		var targetElement = top.document.getElementById(id);  
		  
		if(sourceElement && targetElement) {  
			//change id of targetElement  
			targetElement.setAttribute('id',oldId);  
			  
			var ele = top.document.createElement(sourceElement.nodeName);  
			ele.setAttribute('id',id);  
			ele.innerHTML = sourceElement.innerHTML;  
			  
			targetElement.parentNode.appemdChild(ele);  
			targetElement.parentNode.removeChild(targetElement);  
		}  
	}  
}

Es muss doch eine simple Möglichkeit geben, ein HTML-Element auszutauschen, oder? Was ist daran so schwierig?

Grüße!

Hi,

  var sourceElement = document.getElementById(id);  
  var targetElement = top.document.getElementById(id);  
  if(sourceElement && targetElement) {  
  	  targetElement.parentNode.replaceChild(targetElement, sourceElement);  

Aber beim Aufruf von replaceChild(..) bekomme ich die JavaScript-Fehlermeldung "Ungültiges Argument" (IE 6).

Natürlich, denn du kannst in ein Dokument nur Knoten einhängen, die du auch in dessen Kontext erzeugt hast.

Wenn du einen Knoten aus einem anderen Dokument einfügen willst - dann gibt es dafür document.importNode.
Das kennen nur dummerweise die IE < 8 noch nicht. Da muss man sich im Zweifelsfalle dann mit innerHTML und Co. einen Workaround basteln.

MfG ChrisB