André Löscher: IE will kein dynamisches onclick

Hallo allerseits,

ich möchte gerne, dass jedes Image auf der html seite bei einem Klick automatisch durch ein onclick Event eine weitere Function ausführt. Der Firefox macht es, der IE streikt! Hat jemand eine Idee?

Vielen Dank

André

-----------------------------

<script type="text/javascript">
function sayHello() {
 Fenster1 = window.open("http://forum.de.selfhtml.org", "Zweitfenster", "width=300,height=400,left=100,top=200");
 Fenster1.focus();

}

function updateLinks() {
 var test = document.getElementsByTagName("a");
 for(var i=0;i<test.length;i++) {
  var imageSize = document.createAttribute("onClick");
  imageSize.nodeValue = "javascript:sayHello()";
  document.getElementsByTagName("a")[i].setAttributeNode(imageSize);
 }
}
</script>

<body onload="javascript:updateLinks()">
<a href="#"><img src="images/andy_band.jpg" width="150" height="100" border="0" /></a><br />
<a href="#"><img src="images/arndt_band.jpg" width="150" height="100" border="0" /></a>

  1. Servus,

    etwas sinnlos, ein onclick-Attribut mit Javascript zu erzeugen. Warum verwendest du nicht einfach den Eventhandler innerhalb deines Scripts? z.B.

      
    function attachOnClick()  
    {  
        var imgs = document.getElementsByTagName('img');  
      
        for (var i = 0; i < images.length; i++) {  
            imgs[i].onclick = sayHello();  
        }  
    }  
      
    window.onload = attachOnClick;  
    
    

    Gruss
    Patrick

    --
    sh:( fo:| ch:? rl:( br:> n4:( ie:% mo:) va:} de:> zu:) fl:| ss:| ls:[ js:|
    1. Hallo shn,

      imgs[i].onclick = sayHello();

      damit hast Du als Eventhandler den Rückgabewert von sayHello() gesetzt.

      Gruß, Jürgen

      1. Servus,

        imgs[i].onclick = sayHello();

        Fluechtigkeitsfehler, die Klammern muessen natuerlich weg:
        imgs[i].onclick = sayHello;

        damit hast Du als Eventhandler den Rückgabewert von sayHello() gesetzt.

        Die Funktion wird beim Klick auf das Bild ausgefuehrt. sayHello() Hat keinen Rueckgabewert, also nein.

        Gruss
        Patrick

        --
        sh:( fo:| ch:? rl:( br:> n4:( ie:% mo:) va:} de:> zu:) fl:| ss:| ls:[ js:|
        1. hi,

          imgs[i].onclick = sayHello();
          Fluechtigkeitsfehler, die Klammern muessen natuerlich weg:
          imgs[i].onclick = sayHello;

          damit hast Du als Eventhandler den Rückgabewert von sayHello() gesetzt.
          Die Funktion wird beim Klick auf das Bild ausgefuehrt. sayHello() Hat keinen Rueckgabewert, also nein.

          Dezogen auf den Code vor deiner Korrektur war Jürgens Aussage korrekt.

          Und wenn deine Funktion nichts zurückgibt, dann weisst du mit xyz = funktion() eben nichts zu (also vermutlich "undefined").

          gruß,
          wahsaga

          --
          /voodoo.css:
          #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. Hallo André,

    function updateLinks() {
    var test = document.getElementsByTagName("a");
    for(var i=0;i<test.length;i++) {
      var imageSize = document.createAttribute("onClick");
      imageSize.nodeValue = "javascript:sayHello()";
      document.getElementsByTagName("a")[i].setAttributeNode(imageSize);
    }
    }

    ich setze Eventhandler so:

    imageSize.onload = sayHello;

    ohne Klammern! Der Handler ist eine Funktionsreferenz, kein Rückgabewert.

    Gruß, Jürgen