hawkmaster1: NotFoundError: Node was not found

Hallo zusammen, ich möchte einen Bilderwechsel machen. Folgende Funktion wird bei einem onchange in einem <select> aufgerufen

function ShowJobtkProductImage(index) {
var div = document.getElementById('productimage');
   if(div.getElementsByTagName("img")[0]){
	alert('div ist da');
        div.removeChild(document.getElementsByTagName("img")[0]);
   }
		if(document.forms[0].sel_productimages.options[index].value != ""){
			var imgurl = document.forms[0].sel_productimages.options[index].value ;
			var img = document.createElement("img");
			img.src = "../image/icons/products/" + imgurl;
			document.getElementById('productimage').appendChild(img);
		}

}

Die Fehlermeldung heisst NotFoundError: Node was not found

und kommt von div.removeChild(document.getElementsByTagName("img")[0]);

Ich frage mich nur warum? Der Test Alert 'div ist da' meldet doch das img vorhanden ist? vielen Dank Gruss hawk

  1. Liebe Mitdenker, liebe Wissende, liebe Neugierige,

    Hallo zusammen, ich möchte einen Bilderwechsel machen. Folgende Funktion wird bei einem onchange in einem <select> aufgerufen

    function ShowJobtkProductImage(index) {
    var div = document.getElementById('productimage');
       if(div.getElementsByTagName("img")[0]){
    	alert('div ist da');
            div.removeChild(document.getElementsByTagName("img")[0]);
       }
    		if(document.forms[0].sel_productimages.options[index].value != ""){
    			var imgurl = document.forms[0].sel_productimages.options[index].value ;
    			var img = document.createElement("img");
    			img.src = "../image/icons/products/" + imgurl;
    			document.getElementById('productimage').appendChild(img);
    		}
    
    }
    

    Probier bitte mal so:

    function ShowJobtkProductImage(index) 
    {
        var div = document.getElementById('productimage');
        if(img0 = div.getElementsByTagName("img")[0])
        {
    	alert('image ist da');
            img0.parentNode.removeChild(img0);
        }
    		if(document.forms[0].sel_productimages.options[index].value != ""){
    			var imgurl = document.forms[0].sel_productimages.options[index].value ;
    			var img = document.createElement("img");
    			img.src = "../image/icons/products/" + imgurl;
    			document.getElementById('productimage').appendChild(img);
    		}
    
    }
    

    Bin gespannt, ob das so klappt

    Spirituelle Grüße
    Euer Robert
    robert.r@online.de

    --
    Möge der wahre Forumsgeist ewig leben!
    1. Hallo Robert, vielen Dank für deine Hilfe.

      ja, deine Änderung scheint zu klappen. Zumindest kam der Fehler nicht mehr. Ich hatte zwar kurzzeitig seltsame Firebug Meldungen wie

      uncaught exception: out of memory

      Aber das war vielleicht nur temporär?

      viele Grüße hawk

      1. Tach!

        ja, deine Änderung scheint zu klappen. Zumindest kam der Fehler nicht mehr.

        Wann immer du im DOM etwas suchst und dieses ein weiteres Mal brauchst, leg es in einer Variable ab und verwende diese. Dann kann es auch nicht mehr passieren, dass du einmal die Nachfahren eines Elements durchsuchst und beim nächsten Mal das document.

        dedlfix.

  2. Hallo hawk,

    function ShowJobtkProductImage(index) {
        var div = document.getElementById('tester');
        if (div.getElementsByTagName('img')[0]) {
            console.log('div ist da, bild ist weg');
            div.removeChild( document.getElementsByTagName('img')[0] );
        }
    }
    

    der Teil funktioniert!

    gr qx