In Firefox, when the number of innerHTML operations is large, the performance will be greatly reduced. Someone wrote an alternative method to improve the performance of innhtml:
Function replaceHtml (el, html ){
Var oldEl = typeof el = "string "? Document. getElementById (el): el;
/* @ Cc_on // The original innerHTML has better performance in IE
OldEl. innerHTML = html;
Return oldEl;
@*/
Var newEl = oldEl. cloneNode (false );
NewEl. innerHTML = html;
OldEl. parentNode. replaceChild (newEl, oldEl );
/* If we remove the old element from the DOM, a new element reference is returned. */
Return newEl;
};
You can directly use el = replaceHtml (el, newHtml) instead of el. innerHTML = newHtml.
Test the speed improvement. The author provides a test page: http://stevenlevithan.com/demo/replaceHtml.html
This method greatly improves the performance of innerHTML on Firefox and Safari. ReplaceHtml () in Firefox 2.0.0.6, destroy and replace are both 473 times faster and 50 times faster. In Safari 3.0.3 beta, It is 100 times that of create and 50 times that of replace.
The performance of Opera is still improved, but the increase is not as amazing as the two browsers mentioned above,
Only in IE, the original innerHTML method is more efficient.
Original article: http://www.js8.in/607.html