有可能使这个脚本更有效率吗
Is it possible to make this script more efficient?
我刚刚使用flot和jquery完成了我的脚本。现在我的问题是,它在opera和Firefox中速度很快,但在internet explorer中速度慢得令人痛苦(这并不奇怪),所以这就是为什么我想知道是否有办法让我的脚本更高效(换句话说,也许可以删除一些"for循环"等)?因此,如果有任何代码大师有一些空闲时间可以消磨,请帮助我,因为我自己在写高效代码方面很糟糕:P
非常感谢提前=)
可以找到在这个地址
更多提示:
有人指出:
... $(this).attr('id');
... $(this).attr('name');
是昂贵的,你在这里根本不需要美元,只需使用:
... this.id;
... this.name;
此外,使用.css(...)
是一种巨大的浪费,使用一个类并将CSS放在样式元素中。
您可以将类似$('#x')
的引用存储在闭包中。同样,您不需要$,使用document.getElementByid直接获得对元素的引用要高效得多,这样就不会:
$('#x').text(pos.x.toFixed(2));
你可以有:
x.innerHTML = pos.x.toFixed(2);
它用单个属性访问替换了几个函数调用。基本思想是尽可能多地删除jQuery,保留对事物的引用而不是频繁获取它们,并使用直接的属性访问,而不是函数。
顺便说一句,当我尝试从jsFiddle javascript区域复制时,Safari会冻结。我不是那个网站的铁杆粉丝。
for(k; k<datasets.length; k++){
每次下一次执行循环时,您都在调用length属性,最好只在循环开始时将其存储在变量中,如下所示:
for(var k, len = datasets.length; k < len; k++){
同样在这里,你在浪费资源:
key = $(this).attr("id");
subsystem = $(this).attr("name");
只需将$(this)粘贴到一个变量中,因为每次使用$()都会创建一个已传递元素的克隆。就这样做吧:
var $this = $(this);
并且从那时起使用$this而不是$(this),只有当它变成不同的对象时才重用$(this)。
首先,对于jQuery选择器,如果使用类名,如果可以使其更具体,则效率会更高。例如,代替
var checkboxContainerFailed = $(".failedCheckboxes");
尝试
var checkboxContainerFailed = $("#graph-table-bottom td.failedCheckboxes");
其次,通常认为使用[]表示法而不是var subsystemNames = new Array();
更好
第三,在这里的数据数组中有一个尾随逗号。这可能会导致IE问题:
"test2-a4/",
]
最后,尝试通过JSLint运行整个过程以查找任何错误。
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 借助asp.net验证或java脚本对多个文本进行验证
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- Java脚本时间添加
- 不显示带有本地json文件数据的谷歌地图脚本
- JQuery添加元素需要在我的js之前再次添加JQuery脚本
- 从远程脚本获取用户IP
- 如何根据时间运行不同的脚本
- 如何将字符串值从php页面发送到java脚本页面
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- 可以设置“;文件名"发生错误时显示的内联脚本标记的
- 当脚本由system.js加载时,如何要求('electron')
- HTML标记在脚本标记中工作
- 是否可以控制获取哪些Google地图脚本(JavaScript API)
- 使用谷歌应用程序脚本从工作表中获取值并将其显示在文本框中
- 显示时间的脚本
- ng应用程序使脚本无限运行
- 如何在运行时在angular 2中加载外部js脚本
- 第一个现实生活-工作JS脚本.我怎样才能使它更有效率
- 有可能使这个脚本更有效率吗