Klasse tauschen bei XMLHTTPRequest

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Klasse tauschen bei XMLHTTPRequest

    Hi,

    irgendwie versteh ich nicht warum das nicht klappt. Folgender (Pseudo-)Code der bei onkeyup in einem Inputfeld ausgelöst wird:

    PHP-Code:
    if(input.value.length 2){
      
    input.className 'progress';

      
    do_something();

      
    input.className '';

    do_something macht einen syncronen xmlHTTPRequest. Die CSS-Klasse "progress" zaubert ein warte-gif (progres-indicator) in den Hintergrund des input-Elements.

    Nur leider funktioniert das nicht. Die Klasse wird zugewisen (mit alert() geprüft), wird aber nicht angezeigt. Auch wenn ich das leer setzen der Klasse weg lasse sehe ich keine Änderung.

    Wenn ich aber nun mit window.setTimeout() (zB) 300ms warte, bevor ich do_something() ausführe, funktioniert es.

    Kann mir das mal einer erklären und mir viellecht den "goldenen" Weg aufzeigen?

    thnx

  • #2
    Re: Klasse tauschen bei XMLHTTPRequest

    Die Rendering-Engine übernimmt meist erst dann wieder, wenn ein Javascript-Anweisungsteil abgeschlossen ist.

    Also per setTimeout selbst für eine "Unterbrechung" zu sorgen, in der der Browser sich Zeit nehmen kann, neu zu Rendern, ist ein gängiger Workaround.
    Wenn du allerdings eh mit XMLHTTPRequest arbeitest, solltest du dir überlegen, ob du nicht lieber asynchron verarbeiten willst. Bei synchron legt es dir u.U. die ganze Seite lahm, wenn etwas richtig schiefgeht.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Danke wahsaga...

      Habs jetzt mal zum Test auf asyncron umgebaut - funktioniert.

      Vielen Dank auch für die erleuchtenden Worte

      Es geht hier im eine "apple spotlight"-ähnliche Suche. Syncron dachte ich wäre die bessere Methode, weil ja sowieso auf Ergebnisse gewartet werden muss. Aber asyncron isses denk ich auch ok

      Kommentar

      Lädt...
      X