Funktionsaufruf funktioniert nicht
Frank Mehlhop
- html
- javascript
1 JürgenB0 Lukas.0 Gunnar Bittersmann0 FrankMe
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
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
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?
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
@@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 🖖
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?
@@Christian Kruse
Du kannst aber auch genauer überwachen, die Events
keyup
,keydown
undkeypress
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 🖖
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
@@Frank Mehlhop
Wie heißt das Event, wenn sich der Inhalt der TextBox ändert?
input
.
☞ CodePen
LLAP 🖖
Und was genau funktioniert bei Dir nicht?
Lukas
@@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 🖖
Danke!