molily: automatisches Löschen von inputs bei Fokus

Beitrag lesen

Hallo,

Vielen, vielen Dank, aber leider kann ich nur sagen: "funzt net". Mehr Fehlerbeschreibung kann ich dir nicht geben, es passiert einfach gar nichts, und es gibt auch keine Fehlermeldung.

Wenn irgendetwas nicht wie beabsichtigt funktioniert, fügt man an verschiedenen kritischen Stellen im Programm Debug-Ausgaben ein, also z.B. window.alert("[Stelle im Programmablauf]"). Genauso kann man diverse Variablen und Rückgabewerte ausgeben und so prüfen, ob sie korrekte Werte beinhalten. Dadurch findet man Fehler ziemlich schnell. Als Beispiel:

alert("Suche Element mit der ID suchfeld...");

if (document.getElementById && (suchfeld = document.getElementById('suchfeld'))) {

alert("Weise Event-Handler zu...")

suchfeld.onfocus = check;
suchfeld.onblur = check;
}

else {
  alert("Element mit der ID suchfeld nicht gefunden!\nsuchfeld enthält: " + suchfeld);
}

...und dann wärst du darauf gekommen, dass der Anweisungsblock dieser if-Anweisung überhaupt nicht ausgeführt wird. Warum? Weil document.getElementById('suchfeld') null zurückgibt. Warum? Weil zu dem Zeitpunkt, wenn dieses Script ausgeführt wird, das Dokument noch gar nicht vollständig geparst ist. Du kannst die Event-Handler erst zuweisen, wenn das Dokument vollständig geladen wurde und damit der DOM-Elementbaum vollständig erzeugt wurde. Du musst das Script also ausführen, wenn das Ereignis load eintritt, z.B. so:
document.onload = init;
function init () {
   /* Weise Event-Handler zu: */
   if (document.getElementById && (suchfeld = document.getElementById('suchfeld'))) {
   /* usw. */
  }
  /* Weiterer Code, der nach dem Laden ausgeführt werden muss */
}

function check (eventobjekt){

Diese Funktion sollte so korrekt sein.

Mathias