Bastian: Event-Handler setzen

Hi,
ich dachte eigentlich so langsam habe ich Javascript und die Eventhandler halbwegs verstanden, jetzt hab ich aber ein simples Beispiel das ich schon nicht zum laufen bekomme:
<html><head>
<script type="text/javascript">

function fkt1(){
document.getElementById("test").onclick="alert('Klick')";
}
</script>
</head>
<body onload='fkt1()'>
<table id="test">
<tbody ><tr>
<th> Inhalt
</th></tr>
</tbody></table>
</body></html>

Das funktioniert bei mir nicht, es erscheint also keine alert-Meldung wenn ich auf die Tabelle klicke. Kann mir jemand erklären warum das so nicht funktioniert ? Ich komme leider nicht drauf :(

Viele Grüße
Basti

  1. Hello out there!

    document.getElementById("test").onclick="alert('Klick')";

    Nein, an 'onclick' übergibst du keinen String, sondern eine Funktion:

    document.getElementById("test").onclick = foo;  
      
    function foo()  
    {  
      alert('Klick');  
    }
    

    Oder mit anonymer Funktion:

    document.getElementById("test").onclick = function ()  
    {  
      alert('Klick');  
    };
    

    Aber was soll der Mischmasch: 'onclick' für "test" im Script; 'onload' für 'body' aber im HTML?

    Beides im Script:

    window.onload = fkt1;  
      
    function fkt1()  
    {  
      document.getElementById("test").onclick = foo;  
    }  
      
    function foo()  
    {  
      alert('Klick');  
    }
    

    Oder so:

    window.onload = function ()  
    {  
      document.getElementById("test").onclick = function ()  
      {  
        alert('Klick');  
      };  
    };
    

    See ya up the road,
    Gunnar

    PS: molilys Artikel Organisation von JavaScripten kennst du?

    --
    „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
    1. Hi Gunnar,
      vielen Dank!! Damit ist es mir klar, keine Ahnung warum ich da in den mindestens 60 Minuten rumprobieren nicht selber drauf gekommen bin.

      Zum Mischmasch: War nur eine Testdatei aber ich geb zu dass ich bisher nicht sonderlich auf die Struktur geachtet hab.
      Den Artikel kannte ich nicht, hab ihn gerade ausgedruckt und werd ihn morgen lesen.
      Viele Grüße
      Basti