pommes: eigenes Objekt wird beim 2. mal ansprechen nicht verarbeitet!!!!

Hallo,
ich habe folgendes Problem: Wenn ich auf das img-Objekt klicke, erstellt die Funktion, wie sie soll, ein zweites Bild. So weit, so gut.
Wenn ich jedoch noch einmal auf das Bild klicke, bricht er die aufgerufene Funktion bildklick() ab, wenn er auf << bild.src = bildsrc.src;>> stößt.
Ich frage mich wieso?
danke im voraus
--------------------------------------------------------------

<script type="text/javascript">
var abfrage = 0;

function bildklick(Ereignis, bildsrc){

if (!Ereignis)
    Ereignis = window.event;
if(abfrage == 0){
 var bild = document.createElement("img");
 var div = document.getElementsByTagName("body")[0];
 div.appendChild(bild);}

bild.src = bildsrc.src;
 bild.style.position = "absolute";
 bild.style.width = "200px";
 bild.style.height = "200px";
 bild.style.top = Ereignis.pageY;
 bild.style.left = Ereignis.pageX;
 bild.style.border = " 3px solid yellow";

abfrage = 1;

}

</script>

</head>
<body>
<div >
<img id="bla" alt="test" name="karte"  src="apollo_laser_reflector.jpg" width="300" height="235" onclick="bildklick(event, this)">

</div>
</body>

  1. Hallo pommes,

    var abfrage = 0;
    das ist klar. Schau:

    Beim ersten Aufruf erzeugst Du das Bild:

    if(abfrage == 0){  
      var bild = document.createElement("img");  
    }
    

    und fügst dann Eigenschaften hinzu. Bei der Variable bild handelt es sich um eine lokale Variable, die nur innerhalb von bildklick() vorhanden ist. Wenn die Funktion also abgearbeitet ist, existiert die Variable auch nicht mehr und das ist Dein Problem. Beim zweiten Klick gibt es das Objekt bild nicht, trotzdem versuchst Du diesem Eigenschaften zu zu weisen - das funktioniert eben nicht. Du müsstes bild "global" halten oder Dir die Referenz erneut holen.

    Übrigens, JavaScript kennt boolische Datentypen. Du solltest besser var abfrage = true; bzw. false verwenden.

    Mit freundlichem Gruß
    Micha

    1. Vielen Dank Micha!!