Re: element.onfocus soll anderes Element verbergen
Von: Thomas 'PointedEars' Lahn (pointedears@web.de) [Profil]
Datum: 01.09.2008 00:51
Message-ID: <48BB207C.6010801@PointedEars.de>
Newsgroup: de.comp.lang.javascript
Datum: 01.09.2008 00:51
Message-ID: <48BB207C.6010801@PointedEars.de>
Newsgroup: de.comp.lang.javascript
Daniel Jung wrote: > N'Abend. Guten Morgen. (Ja, zeitgebundene Begrüssungen sind in einem weltweiten Nicht-Echtzeitmedium wie dem Usenet unsinnig.) > [...] Wenn der Benutzer dann in der Box weitermacht, soll die > Meldung in der div verschwinden, [...] > Ich habe das jetzt gerade so gelöst wie es unten steht (minimal), das > klappt bisher fehlerlos, mit oder ohne <div id="lastSuccess">. Mir fällt > da auch nichts besseres ein. Onchange ging nicht, onfocus reicht aber > eigentlich; es sind dann zwar streng genommen keine Veränderungen > vorgenommen worden, aber die Textbox wurde zumindest wieder angefasst. > > Meine Frage zum Code: Ist das irgendwo "fehlerträchtig und ineffizient", Fehlerträchtig: Das kommt darauf an, wo sich Dein script-Element befindet. Es sollte sich im head-Element befinden, damit die Methode voraussichtlich instantiiert wird, bevor das Markup, auf dem sie operieren soll, gerendert wird. Ineffizient: Ja. Es genügt wohl, die Referenz zum div-Element einmal zu ermitteln. Dies sollte dann `onload' des body-Elements geschehen. > gibt es bessere Lösungen? Ja. > Und genereller: Wie würdet ihr die Fragestellung lösen? Die Events `mouseup' und `keyup' sind gute Kandidaten. Hier sollte dann aber auch überprüft werden, ob sich wirklich etwas am Textinhalt geändert hat, bevor möglicherweise voreilig ausgeblendet wird. Also: beim Laden den alten Stand zwischenspeichern und on Event damit vergleichen. > ------------------------------------ > > <script type="text/javascript"> > function removeSuccess() { > var lastSuccess = document.getElementById("lastSuccess"); > if (lastSuccess != undefined) { if (lastSuccess) { genügt und ist standardkonform. (Lt. W3C DOM Level 2 darf Document::getElementById() nur dann `undefined' liefern, wenn es im Dokument mehr als ein Element mit dieser ID gibt [was ungültig wäre]. Der undefined-Wert von ECMAScript erfüllte dann gewissermassen die DOM-Spezifikation, die für diesen Fall keinen bestimmten Rückgabewert spezifiziert; jener muss sich nur von den spezifizierten unterscheiden.) > lastSuccess.style.display = "none"; Du hast "vergessen", auf alle verwendeten Eigenschaften zu testen, bevor Du auf sie zugreifst. Du hast es hier mit Host-Objekten zu tun, und kannst daher erst recht nichts voraussetzen. PointedEars -- Clientseitig geht das nicht wirklich, weil der Browser selbst keine Mails verschicken kann und das Kooperieren mit Mailprogrammen eher in ein Kollabieren entartet. (Georg Maaß in dcljs <aoh6vi$mbrnu$4@ID-3551.news.dfncis.de>)[ Auf dieses Posting antworten ]
Antworten
- Daniel Jung (01.09.2008 12:47)
