Markus**: replaceChild

ich versuche das Erste mit dem Letzen, bzw. das Letze mit dem ersten DIV Element zu überschreiben. Allerdings terminiert das Ganze mit einem "node not found"

  
  
		//erstes DIV suchen und Knoten speichern  
			node = document.getElementById("parent").firstChild;  
			while (node != null) {  
				if (node.nodeName == 'DIV') {  
					first = node.cloneNode(true);  
					break;  
				}  
				node = node.nextSibling;  
			}  
		//letzes DIV suchen und Knoten speichern  
			node = document.getElementById("parent").lastChild;  
			while (node != null) {  
				if (node.nodeName == 'DIV') {  
					last = node.cloneNode(true);  
					break;  
				}  
				node = node.previousSibling;  
			}  
  
		//letzes DIV mit erstem überschreiben  
			document.getElementById("parent").replaceChild(first, last);  

hab ich "replaceChild" falsch verstanden?

  1. hab's begriffen!
    replaceChild(element, position)

  2. Hallo,

    um nur replace zu testen, würde ich auf den rest verzichten.

      
    <html>  
    	<script>  
    	myReplace = function() {  
    		p1 = document.getElementById("p1");  
    		p2 = document.getElementById("p2");  
    		document.getElementsByTagName("body")[0].replaceChild(p1,p2);  
    	}  
    	</script>  
    	</head>  
    	<body>  
    	<p id="p0">p0</p>  
    	<p id="p1">p1</p>  
    	<p id="p2">p2</p>  
    	<p id="p3">p3</p>  
    	<button onclick="myReplace()">myReplace()</button>	  
    	</body>  
    </html>  
    
    

    Gruß

    jobo

    1. Dein Script gibt aber auch nicht das wieder, was replaceChild eigentlich tun soll... ;) Hast Du es getestet?

      Cheers

      1. Hallo,

        Dein Script gibt aber auch nicht das wieder, was replaceChild eigentlich tun soll... ;) Hast Du es getestet?

        ja. p2 war wech. wie würdest du es denn anpassen? kannst dir doch mit

        myParagraph = document.createElement("p");
        myText = document.createTextNode("bla");
        myParagraph.appendChild(myText);

        einen eigenen Absatz basteln und den stattdessen ersetzen.

          
        <html>  
        	<script>  
        [code lang=javascript]  
        	myReplace = function() {  
        		p1 = document.getElementById("p1");  
        		p2 = document.getElementById("p2");  
        		document.getElementsByTagName("body")[0].replaceChild(p1,p2);  
        		myNewParagraph = document.createElement("p");  
        		myNewText = document.createTextNode("myNewTextInmyNewParagraph");  
        		myNewParagraph.appendChild(myNewText);  
        		p3 = document.getElementById("p3");  
        		document.getElementsByTagName("body")[0].replaceChild(myNewParagraph,p3);  
        	}  
        
        
        </script>  
        </head>  
        <body>  
        <p id="p0">p0</p>  
        <p id="p1">p1</p>  
        <p id="p1a">p1a</p>  
        <p id="p1b">p1b</p>  
        <p id="p2">p2 - to be replaced with p1</p>  
        <p id="p2a">p2a</p>  
        <p id="p2b">p2b</p>  
        <p id="p3">p3 - to be replaced with newNode</p>  
        <p id="p3a">p3a</p>  
        <p id="p3a">p3b</p>  
        <button onclick="myReplace()">myReplace()</button>	  
        </body>  
        

        </html>
        [/code]

        getestet (;-).

        Gruß

        jobo

      2. Hallo,

        Dein Script gibt aber auch nicht das wieder, was replaceChild eigentlich tun soll... ;) Hast Du es getestet?

        Es zeigt auch, dass das Element, mit dem man replaced, dann seinen Platz verlässt. Und das replacte ist dann wech.

        Gruß

        jobo