Peter Kranz: onClick funktioniert nicht

Hallo.

Hat jemand eine Idee, warum das eigentlich simple Script unten nicht funktioniert? Der Alter sollte eigentlich nur duch einen Mausklick ausgelöst werden. Komischerweise wird er immer ausgelöst, wenn die Seite geladen wird ??

---

<html>
<body>

<img src='bilder/button0.png' border=0 id='bild'>

<script>
document.getElementById('bild').onClick = alert("Hallo!");
</script>

</body>
</html>

  1. Hallo Peter,

    Hat jemand eine Idee, warum das eigentlich simple Script unten nicht funktioniert? Der Alter sollte eigentlich nur duch einen Mausklick ausgelöst werden.

    dann brauchst du ein onclick="" aber im <img>-Tage (wenn die das alert() durch einen Klick auf das Bild ausgelöst werden soll), außerdem musst du das was ausgeführt werden soll in eine Funktion packen (->selfhtml).

    Komischerweise wird er immer ausgelöst, wenn die Seite geladen wird ??

    logisch, das js wird eben ausgeführt wenn die Seite geladen ist.

    <img src='bilder/button0.png' border=0 id='bild'>

    hier fehlt ein alt=""

    <script>

    hier fehlt ein type="text/javascript"

    document.getElementById('bild').onClick = alert("Hallo!");

    onclick ist keine Unterelement von getElementById()
    außerdem wird ein alert aufgerufen, indem man einfach nur alert("bla"); schreibt - ein document.getElementById() brauchst du da nicht (du solltest dir vielleicht nochmal das selfhtml-Kapitel über js zu Gemüte führen :-))

    Grüße aus Nürnberg
    Tobias

    --
    sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
    (Selfcode -> http://emmanuel.dammerer.at/selfcode.html)
    1. dann brauchst du ein onclick="" aber im <img>-Tage (wenn die das alert() durch einen Klick auf das Bild ausgelöst werden soll),

      Ich brauche leider die andere Lösung. Und ich bin mir sicher, dass es anders funktioniert.

      außerdem musst du das was ausgeführt werden soll in eine Funktion packen (->selfhtml).

      Ok, habe ich jetzt mal gemacht.

      <img src='bilder/button0.png' border=0 id='bild'>
      hier fehlt ein alt=""

      Ist das wirklich Pflicht? Egal. Habe ich mal eingefügt.

      <script>
      hier fehlt ein type="text/javascript"

      Auch eingefügt.

      außerdem wird ein alert aufgerufen, indem man einfach nur alert("bla"); schreibt - ein document.getElementById() brauchst du da nicht

      Habe ich jetzt praktisch über die Funktion umgesetzt. Der Effekt: Jetzt wird der Alert nicht beim Seitenladen ausgeführt, sondern schlicht gar nicht. Da kann ich klicken wie ich will. Ich weiß, dass es irgendwie funktionieren muß! ;-(

      ---

      <html>
      <body>

      <img src='bilder/button0.png' border=0 id='bild' alt='test'>

      <script type="text/javascript">

      alertFunktion(evt) {
        alert("Hallo!");
      }

      var el=document.getElementById('bild');
      el.onClick = alertFunktion;

      </script>

      </body>
      </html>

      1. Hallo Peter Kranz,

        dann brauchst du ein onclick="" aber im <img>-Tage (wenn die das alert() durch einen Klick auf das Bild ausgelöst werden soll),
        Ich brauche leider die andere Lösung.

        warum?

        Und ich bin mir sicher, dass es anders funktioniert.

        ich wüsste nicht, das es anders als mit onclick="" geht.

        hier fehlt ein alt=""
        Ist das wirklich Pflicht?

        ja.

        Egal.

        nicht egal - irgendwas muss ja angezeigt werden wenn das Bild nicht da ist.

        Auch eingefügt.

        brav :-)

        alertFunktion(evt) {

        mit evt übergibst du Variablen, in dem Fall brauchst du die aber nicht.

        alert("Hallo!");
        }

        du musst in den <img>-Tag noch ein onclick="alertFunktion" schreiben, dann sollte es funktionieren.

        var el=document.getElementById('bild');
        el.onClick = alertFunktion;

        onclick gibt es unterhalb von getElementById() nicht.

        Grüße aus Nürnberg
        Tobias

        --
        sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
        (Selfcode -> http://emmanuel.dammerer.at/selfcode.html)
      2. Hallo,

        <script type="text/javascript">

        alertFunktion(evt) {

        function alertFunktion(evt) {

        alert("Hallo!");
        }

        var el=document.getElementById('bild');
        el.onClick = alertFunktion;

        el.onclick = alertFunktion;

        </script>

        MfG, Thomas

        1. alertFunktion(evt) {

          function alertFunktion(evt) {

          el.onClick = alertFunktion;

          el.onclick = alertFunktion;

          DANKE!!! Ich wußte es geht. Nur dumme Flüchtigkeitsfehler. Du bist mein Held des Abends, den ich arbeitsmäßig wegen Unkonzentriertheit jetzt besser beende. ;-)

  2. Hi!

    <html>
    <body>

    <img src='bilder/button0.png' border=0 onClick="alert('Hallo!')">

    </body>
    </html>

    MfG
    Dr. Ma-Busen

  3. Hi,

    document.getElementById('bild').onClick = alert("Hallo!");
    Komischerweise wird er immer ausgelöst, wenn die Seite geladen wird

    Völlig logisch. Der Ausdruck rechts vom Gleichheitszeichen wird ausgewertet und das Ergebnis der Variablen links zugewiesen. alert("Hallo!") wird also ausgewertet (d.h. ausgeführt). Der return-Wert von alert ist "undefined" (anders gesagt, alert hat keinen return-Wert). Folglich wird dem onclick-Event undefined zugewiesen.

    Workarounds wurden ja schon zuhauf genannt.

    Salokin