Javascript 变量在循环结束时不递增
我有一个函数,它在一些单元格上循环并执行一些计算。基本上,我给一个变量设置一个值作为起始点……这个数字在经过每个单元格后应该是递增的。数学和一切都按预期进行,但变量没有递增,这使得一切都错了。它只捕获第一个值,在下面的示例中是5.00。以下是我的功能:Javascript 变量在循环结束时不递增,javascript,jquery,Javascript,Jquery,我有一个函数,它在一些单元格上循环并执行一些计算。基本上,我给一个变量设置一个值作为起始点……这个数字在经过每个单元格后应该是递增的。数学和一切都按预期进行,但变量没有递增,这使得一切都错了。它只捕获第一个值,在下面的示例中是5.00。以下是我的功能: $(function percentSpace() { var theIndexer = 20; var x = $('#rackPlan0 > tbody > tr.categorySub > td:not(:firs
$(function percentSpace() {
var theIndexer = 20;
var x = $('#rackPlan0 > tbody > tr.categorySub > td:not(:first-child,:last-child)');
x.each(function() {
var a = $('#rackPlan1 > tbody > tr:last-child > td:nth-child(' + theIndexer + ')');
var b = $(this);
var c = parseFloat(a.text(), 10) || 0;
console.log(theIndexer);
var d = parseFloat(b.text(), 10) || 0;
var perc = parseFloat((d / c) * 100);
$(this).html(perc.toFixed(0)).append('%');
});
theIndexer++;
})
索引器没有增加…不知道为什么此时此刻
这是我的完整示例,请确保向右滚动以查看其他表格。任何帮助都将不胜感激 必须在每个回调函数中移动增量行,否则直到该迭代器之后才会执行。见下例: $function percentSpace{ 变量指数=20; var x=$'rackPlan0>tbody>tr.categorySub>td:not:first child,:last child'; x、 每个函数{ 变量a=$'rackPlan1>tbody>tr:last child>td:nth child'+theIndexer+; var b=这一美元; var c=parseFloata.text,10 | | 0; console.logtheIndexer; var d=parseFloatb.text,10 | | 0; var perc=parsefloat/c*100; $this.htmlperc.toFixed0.append“%”; 索引器++; }; //输出:索引器:22 console.log'indexer:',索引器; } 类别组 类别 原生动物 固定点 季节性的 头和手D23 0.50 567 季节性的 头和手D23 0.50 2,666 季节性的 头和手D23 0.50 3,233 季节性的 头和手D23总计 0.50 3,233 季节性的 泳衣D23 0 582 季节性的 泳衣D23 0 2,793 季节性的 泳衣D23 0 3,375 季节性的 泳衣D23 0.50 588 季节性的 泳衣D23 0.50 2,755 季节性的 泳衣D23 0.50 3,343 季节性的 泳衣D23 1 587 季节性的 泳衣D23 1 2,766 季节性的 泳衣D23 1 3,353 季节性的 泳衣D23 0 537 季节性的 泳衣D23 0 2,594 季节性的 泳衣D23 0 3,131 季节性的 游泳衣D23总计 1.50 13,202 总计 2 16,435 贮藏特性 原型A 原生动物 全部的 存储Ct 5. 3. 3,873 运行存储Ct 5. 3,873 3,873 分配的机架 10 1. 106 超过/低于 -5 -5 0.50 20% 泳装D23%空间 4 1.50 80%
这最后帮我完成了任务…谢谢大家
$(function percentSpace() {
var theIndexer = 20;
var x = $('#rackPlan0 > tbody > tr.categorySub > td:not(:first-child)');
x.each(function () {
var a = $('#rackPlan1 > tbody > tr:last-child > td:nth-child(' + theIndexer + ')');
var b = $(this);
var c = parseFloat(a.text(), 10) || 0;
var d = parseFloat(b.text(), 10) || 0;
var perc = parseFloat((d / c) * 100);
if ($(this).hasClass('catSub')) {
$(this).html(perc.toFixed(0)).append('%');
theIndexer++;
}
else if ($(this).hasClass('catFixP')) {
theIndexer = 20;
}
});
})
您的增量不在循环内。另外,您的增量变量是多余的,因为each handler函数将当前迭代的索引作为参数。除了@RoryMcCrossan所说的之外,这看起来像是对:nth child的滥用。为什么不选择另一组td元素,并通过索引访问它们呢?我有两个拼写错误。一个是subCat而不是catSub,另一个是错误的变量名。为了便于将来参考,将代码示例减少到最少的示例会有所帮助。这包括HTML。那里有很多与问题无关的额外标记……通过将回调直接传递给.text,可以使标记更短、更清晰。这也更有效。我从parseFloat中删除了基数参数,因为它在该函数中没有任何作用。很抱歉,这仍然是:nth child的一个讨厌的用法。在选择元素时,应该更好地利用已经定义的类。