5

I've got a table with a header, a row with input fields, rows with data. Like this. http://brow.hu/sitegen/stackoverflow_table_example.png

If somebody enters something into an input field I want to filter the data with an ajax query. After receiving the new table I change the content of the old one: div.innerHTML = req.responseText; and it blinks. How to avoid that?

Brian Tompsett - 汤莱恩
  • 5,753
  • 72
  • 57
  • 129
Zoltan Lengyel
  • 340
  • 5
  • 14

2 Answers2

8

One way to avoid flicker is called double-buffering. In Ajax, this can be done simply with 2 divs occupying the same space, one of them with the style 'display: none', the other 'display: inline'. Always write to the invisible one, and then swap display styles. If the divs have absolute positioning and size, there is absolutely no chance for flicker, and even if they don't, you can hardly do better.

Alan Hensel
  • 823
  • 7
  • 15
3

It blinks because you're completely replacing the table ... if you add rows to or delete rows from the existing table and then load your AJAX data into the resulting table it won't blink.

Steve Moyer
  • 5,663
  • 1
  • 24
  • 34