JQUERY/JavaScript -故障代码导致谷歌浏览器冻结
JQUERY/JavaScript - trouble code causing google chrome to freeze
我有一些代码循环并调用一个对表进行一些计算的函数。我已经痛苦地通过了大量的代码,以查明这一特定的代码是铬冻结约一分钟的原因。有没有人有任何建议,如何从性能的角度改进这段代码?
function getAverage(a, b) {
var sum = 0;
var count = 0;
$(a).each(function () {
$content = $(this).html();
var tdTxt = parseFloat($(this).text(), 10) || 0;
if ($(this).hasClass(b)) {
var theAvg = parseFloat((sum / count), 10) || 0;
$(this).text(theAvg.toFixed(2));
sum = 0;
count = 0;
} else {
sum += parseFloat(tdTxt);
if ($content == '') {
}
else {
count += 1;
}
}
})
}
var el1 = $('#rackPlan1 > thead > tr > th:gt(17):not(.totalRow)');
var starter = 19;
for (i = 0; i < el1.length; i++) {
$('#rackPlan1 > tbody > tr > td:nth-child(' + starter + ')').each(function () {
getAverage('#rackPlan1 > tbody > tr > td:nth-child(' + starter + ')', 'subTotal');
})
starter += 1;
}
多谢
严格看getAverage()
函数,我建议:
function getAverage(a, b) {
var $this, $content, tdTxt, theAvg; // it's marginally less expensive to declare vars at a higher scope and re-use them in a lower scope
var sum = 0;
var count = 0;
$this = $(a); // cache this nth-child received from the $.each loop
$content = $this.html();
tdTxt = parseFloat($this.text(), 10) || 0;
if ($this.hasClass(b)) {
theAvg = parseFloat((sum / count), 10) || 0;
$this.text(theAvg.toFixed(2));
sum = 0;
count = 0;
} else {
sum += parseFloat(tdTxt);
if ($content == '') {
}
else {
++count; // this micro-optimization makes it marginally faster
}
}
}
<标题> 2 h1> 看另一段代码:
var el1 = $('#rackPlan1 > thead > tr > th:gt(17):not(.totalRow)');
var starter = 19;
$('#rackPlan1 > tbody > tr > td:nth-child(' + starter + ')').nextUntil(':nth-child(' + ((starter+el1.length)-1) + ')').each(function(){
getAverage(this, 'subTotal');
});
<标题> 3
我对:nth-child
没有充分的经验,所以也许这个更好?
$('#rackPlan1 > tbody > tr > td:nth-child(' + starter + 'n+' + ((starter+el1.length)-1) + ')').each(function(){
getAverage(this, 'subTotal');
});
<标题> 4
如果nth-child
的东西失败,然后简单地尝试替换:
getAverage('#rackPlan1 > tbody > tr > td:nth-child(' + starter + ')', 'subTotal');
getAverage(this, 'subTotal');
标题>标题>标题>标题>
相关文章:
- 为什么可以't我在谷歌浏览器中返回cookie
- 谷歌浏览器没有阅读Jsfidle程序
- Javascript字母选择没有'我不能在谷歌浏览器上工作
- 我的时间倒计时脚本在谷歌浏览器中工作正常,但在其他浏览器中打开时它显示为南楠
- 列出谷歌浏览器中安装的所有扩展程序
- 谷歌浏览器模式正则表达式在使用setCustomValidity动态创建表单时不起作用
- 谷歌浏览器扩展程序画布图标
- 谷歌浏览器控制台,打印图像
- 为什么我的谷歌浏览器扩展程序在谷歌浏览器版本 41.0.2272.89 中不起作用
- 多个 socket.io 客户端连接不起作用(谷歌浏览器,火狐浏览器)
- 对象在谷歌浏览器中没有方法“焦点”
- 谷歌地图API v3自定义光标在谷歌浏览器中的热点
- 我们如何在谷歌浏览器的每个页面上打印表格标题
- 谷歌浏览器中的getUserMedia
- 在谷歌浏览器中,标签之间最快的通信是什么
- 在谷歌浏览器中用程序固定一个标签
- 为什么javascript在谷歌浏览器上不起作用
- window.打开谷歌浏览器中的选项卡和窗口
- 如何在谷歌浏览器中使用step-int和step-over'用于调试Java脚本的Web检查器
- JQUERY/JavaScript -故障代码导致谷歌浏览器冻结