我剛剛完成我的腳本,使用flot和jquery。現在我的問題是,它在Opera和Firefox中速度很快,但在Internet Explorer中速度很慢(不出所料),這就是爲什麼我想知道是否有辦法讓我的腳本更有效率(換句話說,可能會刪除一些「for循環」等)?因此,如果有任何代碼大師那裏誰有一些空閒時間殺的,請幫助我,因爲我自己也是可怕的。在寫高效的代碼:P是否可以使此腳本更有效?
感謝這麼多提前=)
它可以發現 on this address
我剛剛完成我的腳本,使用flot和jquery。現在我的問題是,它在Opera和Firefox中速度很快,但在Internet Explorer中速度很慢(不出所料),這就是爲什麼我想知道是否有辦法讓我的腳本更有效率(換句話說,可能會刪除一些「for循環」等)?因此,如果有任何代碼大師那裏誰有一些空閒時間殺的,請幫助我,因爲我自己也是可怕的。在寫高效的代碼:P是否可以使此腳本更有效?
感謝這麼多提前=)
它可以發現 on this address
再提一些建議:
有人指出:
... $(this).attr('id');
... $(this).attr('name');
是昂貴的,你不需要$這裏所有,只需使用:
... this.id;
... this.name;
而且,使用.css(...)
是一個巨大的浪費,使用一個類並將CSS放入一個樣式元素中。
您可以將參考文獻(例如$('#x')
)存儲在關閉中。同樣,您不需要$,使用文檔直接獲取元素的效率會更加高效。的getElementById使,而不是:
$('#x').text(pos.x.toFixed(2));
你可以有:
x.innerHTML = pos.x.toFixed(2);
它取代幾個功能與單個屬性訪問調用。基本思想是儘可能多地刪除jQuery,保持對事物的引用,而不是頻繁獲取它們,並使用直接的屬性訪問,而不是函數。
順便說一下,當我嘗試從jsFiddle javascript區域複製時,Safari會凍結。我不是那個網站的忠實粉絲。
+1有用的考慮,使用jQuery非常實用,我忘記了大部分的東西都可以用基本的JS直接完成。大 –
for(k; k<datasets.length; k++){
每次執行循環接下來,您呼叫的length屬性,它的更好,如果你是在一個變量在循環的開始只保存,這樣的時刻:
for(var k, len = datasets.length; k < len; k++){
個
而且,這裏你是在浪費資源:
key = $(this).attr("id");
subsystem = $(this).attr("name");
只是施蒂希$(本)到一個變量,使每次使用$()創建通過元素的副本時間。只是這樣做:
var $this = $(this);
而且使用$該從那裏來代替$(本),只能重複使用$(本)當這成爲一個不同的對象。
首先,使用jQuery選擇器,如果使用類名,那麼如果可以更具體地使用它,則效率更高。 e.g代替
var checkboxContainerFailed = $(".failedCheckboxes");
嘗試
var checkboxContainerFailed = $("#graph-table-bottom td.failedCheckboxes");
其次,它通常被認爲不如用[]符號來代替var subsystemNames = new Array();
第三,你在這裏的數據陣列中的尾隨逗號。這可能會導致IE的問題:
"test2-a4/",
]
最後,試圖通過JSLint任何錯誤運行整個事情。
如果你能解釋它應該做什麼等,而不是我們必須閱讀數百行代碼,這會有所幫助。 – Niklas
您是否嘗試過使用IE8/9或Firefox中的JavaScript分析器(通過Firebug)分析您的代碼? –