Frank Mehlhop: Funktionsaufruf funktioniert nicht

Hallo, ich beschäftige mich gerade mit JavaScript und wundere mich, dass mein kleines Testprogramm nicht funktioniert. Bei einer Eingabe in einer TextBox soll die Funktion test() aufgerufen werden. Aber diese Funktion wird nicht aufgerufen. Warum wird die Funktion nicht aufgerufen?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>JS Übung</title>
<script>
function test()
{
	document.getElementById("hinweis").innerHTML="Inhalt geändert";
}
</script>
</head>

<body >
<input type="text" size="20" value="" onchange="test()"/>
<span id="hinweis">Bitte Text eingeben!</span>
</body>
</html>

Dank, sagt Frank

akzeptierte Antworten

  1. Hallo,

    wann erwartest du denn den Funktionsaufruf? So weit ich weiß, feuert "change" erst, wenn das Element den Fokus verliert, du also irgendwo anders hin klickst.

    Gruß
    Jürgen

    1. Danke für den Hinweis! Ich hatte es nicht bemerkt (weil nicht getestet), dass das Event erst beim verlassen der TextBox ausgelöst wird. Ich hatte erwartet, dass sobald ein Zeichen hinzukommt oder gelöscht wird, das Ereignis ausgelöst wird. Wie heißt das Event, wenn sich der Inhalt der TextBox ändert?

      1. Hallo Frank,

        Wie heißt das Event, wenn sich der Inhalt der TextBox ändert?

        Das heisst change. Das ist schon richtig.

        Du kannst aber auch genauer überwachen, die Events keyup, keydown und keypress existieren auch. Die feuern aber nicht unbedingt nur, wenn sich etwas verändert hat.

        LG,
        CK

        1. Danke! Dann nehme ich halt onkeyup(). Das onchange erst feuert, nachdem der Fokus weg ist, macht m.E. nicht viel Sinn. Zumindest nicht in dem Sinne, wie ich es brauche.

          Herzliche Grüße, von Frank

          1. @@Frank Mehlhop

            Dann nehme ich halt onkeyup(). Das onchange erst feuert, nachdem der Fokus weg ist, macht m.E. nicht viel Sinn. Zumindest nicht in dem Sinne, wie ich es brauche.

            keyup feuert wohl auch nicht, wie es der Nutzer braucht (nicht bei drag and drop).

            LLAP 🖖

            --
            “When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory
          2. So weit ich weiß, feuert "change" erst Die feuern aber nicht Das onchange erst feuert

            Dschörmän for runaways, oder wie? Ereignisse werden im Deutschen ausgelöst oder treten ein, sie werden nicht gefeuert (gefeuert wird der Angestellte) und schon gar nicht feuern sie sich selbst. Und nein, Kanonen werden abgefeuert, anderes Wort, und wenn man jemanden erschießt, dann feuert man auf ihn.

            Aus dem Bildungsmangel heraus, im Englischen benannte Umstände in der eigenen Muttersprache, dem Deutschen zu beschreiben, blindblondblöd eine wortwörtliche Übersetzung zu nehmen, die dann zu allem Überfluss auch noch sinngemäß völlig danebenliegt - es ist grauenhaft.

            Aber vermutlich kommt jetzt als Gegenargument, dass sich alle professionellen Fliegen auf diese Verbalscheiße setzen (schon gehört), oder der noch sinnlosere Einwand, man könne sich doch nicht gegen die Übermacht des Englischen stellen (auch schon gehört).

            Die gerade in den letzten Monaten gravierend zunehmende Unsitte, zusammengesetzte Wörter wie die

            TextBox

            mittendrin mit Großbuchstaben zu garnieren, ist mir auch ein Rätsel. Haben diese Leute nach der Grundschule mit Ausnahme von Werbung kein einziges Wort mehr gelesen oder wie kommt sowas?

        2. @@Christian Kruse

          Du kannst aber auch genauer überwachen, die Events keyup, keydown und keypress existieren auch. Die feuern aber nicht unbedingt nur, wenn sich etwas verändert hat.

          Ja. Das macht sich auch bei der Vorschau hier im Forum störend bemerkbar, wenn man Text per drag and drop einfügt. Könntest du das auf input umbauen?

          LLAP 🖖

          --
          “When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory
          1. Hallo Gunnar,

            Das macht sich auch bei der Vorschau hier im Forum störend bemerkbar, wenn man Text per drag and drop einfügt. Könntest du das auf input umbauen?

            Gute Idee.

            LG,
            CK

          2. Hallo Gunnar,

            Könntest du das auf input umbauen?

            [x] done

            LG,
            CK

      2. @@Frank Mehlhop

        Wie heißt das Event, wenn sich der Inhalt der TextBox ändert?

        input.

        CodePen

        LLAP 🖖

        --
        “When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory
  2. Und was genau funktioniert bei Dir nicht?

    Lukas

  3. @@Frank Mehlhop

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    

    Warum XHTML-Doctype? Verwende den HTML5-Doctype.

    Außerdem fehlt die Angabe der Sprache des Inhalts (in dem Fall Deutsch). Das sollte so aussehen:

    <!DOCTYPE html>
    <html lang="de">
    
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    

    Das kannst du dann kürzer haben:

    <meta charset="utf-8" />
    
    <script></script>
    </head>
    

    Scripte sollten, wenn sie nicht async oder defer sind, möglichst am Ende des body eingebunden werden, um das Rendern der Seite nicht zu blockieren.

    <input type="text" size="20" value="" onchange="test()"/>
    <span id="hinweis">Bitte Text eingeben!</span>
    

    Das Eingabefeld hat keine Beschriftung. Auch in Beispielcode sollte jedes Eingabefeld ein label haben.

    LLAP 🖖

    --
    “When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory
    1. Danke!

      --
      www.mehlhop.com