2017-09-29 86 views
1

我有下面的代碼,在我的自定義表中使用排序預處理Mozilla Firefox瀏覽器parseFloat性能下降

​​

此代碼似乎導致到行爲的Mozilla瀏覽器非常不足,尤其是parseFloat部分。 有從各種瀏覽器的結果:

歌劇

Preprocessing ended in 56.89500000000044 milliseconds. 
T1B: 35.88000000001557 
T2B: 4.690000000055079 
T3B: 8.65999999995438 

的Internet Explorer

Preprocessing ended in 372.7204875779862 milliseconds. 
T1B: 248.5273986186603 
T2B: 17.503554555074515 
T3B: 66.14627339602884 

邊緣

Preprocessing ended in 457.5451515628629 milliseconds. 
T1B: 320.98263165675325 
T2B: 9.163721063269804 
T3B: 91.9268633019874 

谷歌瀏覽器

Preprocessing ended in 51.73499999999876 milliseconds. 
T1B: 33.16500000007545 
T2B: 4.495000000026266 
T3B: 7.229999999955908 

Mozilla Firefox瀏覽器(55.0.3(32位))

Preprocessing ended in 31678.250000000004 milliseconds. 
T1B: 31622.514999999778 
T2B: 17.620000000077198 
T3B: 21.96500000006563 

這是怎麼回事!?如何解決這個代碼爲mozilla?

cells[DURATIONTYPE].innerText只包含簡單的浮點數XX.XX,舍入爲2位小數(即43.21)。

回答

4

很確定緩慢的事情是訪問DOM(activeTRTable.rows[i].cells[DURATIONTYPE].innerText)和而不是 parseFloat。

報價MDN(重點煤礦)https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement/rows

返回表中的所有行的活的HTMLCollection的HTMLTableElement.rows只讀屬性。

我假設它產生了當你訪問財產,並沒有隨時爲你準備好。您不應該直接在DOM上工作,而是將所有內容都緩存在您自己的數據結構中,並將DOM視爲只寫。

編輯:作爲快速修復嘗試在循環之前緩存rows屬性。但是,cells屬性的行爲類似。

+0

是的,你是部分權利。這是由那部分引起的。但緩存行似乎並沒有幫助。相反,將.innerText更改爲.innerHTML這個魔法。 Wohoo,預處理結束於37.97毫秒。 – Smarty77

相關問題