我的工作,其中包括一個大型數據表的HTML頁面上許多單元格的內容(jQuery的或JavaScript)。
當用戶與該頁面上的各種控件進行交互時,我想要更新表中的數據,而不重新加載頁面。
換句話說,當用戶更改控件的值時,會觸發一個執行若干計算的JavaScript函數,然後「更新」表中的數據。在典型的情況下,需要更新50到500個單元。
我基線的方法:
- 分配給每個
<td>
小區的唯一ID - 在JavaScript函數,使用
document.getElementById()
去每個單元格的引用,需要更新 - 使用
innerHTML
更新這些細胞
這工作正常,但它可能非常緩慢。例如,是否每個調用innerHTML
強制瀏覽器重新呈現整個表?換句話說 - 更新500個單元觸發500'重新渲染'?或者,瀏覽器只在函數完成後才重新渲染表格?
長話短說,做這件事的最好方法是什麼?
- 我目前的做法?
- 在JavaScript中重新創建整個表格作爲字符串,然後使用ONE調用innerHTML上的
div
包含表? - 別的東西?
我最近看了保羅愛爾蘭的優秀(IMO)介紹有關優化JavaScript性能:
DOM, HTML5, & CSS3 Performance
在這方面,他介紹了更改 「關DOM」;不幸的是 - 這大部分都在我頭上,他的演示文稿不包含任何實際的代碼示例。
我更喜歡直接的JavaScript解決方案,但我也很滿意jQuery解決方案。
非常感謝您的任何建議或見解。
McGrailm - 非常感謝這個建議。這個插件比我在這個項目中需要的更多,但它看起來像一個很棒的工具,所以我非常欣賞這個提示。 – mattstuehler 2011-05-04 14:58:56