我一直在努力...现在约4个小时lmao。
currentCalc返回50 当我提醒他们时,currentSum返回0。但我无法将它们与parseInt一起添加????
我做错了什么:'(
var identRow = $('tr.identRow');
identRow.each(function () {
var getIdentClass = $(this).attr('class').split(' ').slice(1);
$('tr.ohp' + getIdentClass + ' td.EURm').each(function (index) {
var currentCalc = parseInt($(this).text().replace('.', ''), 10);
var currentSum = $('tr.' + getIdentClass + ' td.totalEURm', this).text().replace('.', '');
total = parseInt(currentCalc, 10) + parseInt(currentSum, 10);
$('tr.' + getIdentClass + ' td.totalEURm').text(total);
if (index == 6) {
alert(total);
}
});
});
编辑:
哦,善良。我现在完全糊涂了。我在那里休息。它说总数= 50。我希望每次迭代都将自己添加到总数中。这就是为什么我将currentCalc添加到字段的文本中,将currentCalc放入其中。
$('tr.' + getIdentClass + ' td.totalEURm').text(total);
我的代码现在就像这样:
var identRow = $('tr.identRow');
identRow.each(function () {
var getIdentClass = $(this).attr('class').split(' ').slice(1);
$('tr.ohp' + getIdentClass + ' td.EURm').each(
function (index) {
var currentCalc = parseInt($(this).text().replace('.', ''), 10) || 0;
var currentSum = parseInt($('tr.' + getIdentClass + ' td.totalEURm', this).text().replace('.', ''), 10) || 0;
var total = currentCalc + currentSum;
$('tr.' + getIdentClass + ' td.totalEURm').text(total);
if (index === 6) {
alert(total);
}
});
});
它提醒:50,然后是0,然后是50,然后是0。
编辑:
如何将currentCalc添加到其上一个值?
所以第一次迭代10次,秒20次。我如何在第二次迭代时使它等于30. currentCalc ++只是加1。
现在你明白了我的废话:)
答案 0 :(得分:1)
我不是JS的专家,但我看到currentCalc已经是一个int:
var currentCalc = parseInt($(this).text().replace('.',''), 10);
//...
total = parseInt(currentCalc, 10) + parseInt(currentSum, 10);
所以很可能是int上的parseInt而不是字符串上的失败(?)
答案 1 :(得分:1)
如果您收到两个警报,则可能意味着您的外部或内部.each语句匹配两个条目。
如果您使用的是firebug,请使用console.debug(total);而不是alert()。我建议在某些时候使用console.debug(this)来确保它具有你认为它具有的功能。把它放在alert()上面。这些信息对我们来说很有用。
答案 2 :(得分:0)
我做了一些代码格式化和清理,试试这个:
var identRow = $('tr.identRow');
identRow.each(function () {
var getIdentClass = $(this).attr('class').split(' ').slice(1);
$('tr.ohp' + getIdentClass + ' td.EURm').each(
function (index) {
var currentCalc = parseInt($(this).text().replace('.', ''), 10) || 0;
var currentSum = parseInt($('tr.' + getIdentClass + ' td.totalEURm', this).text().replace('.', ''), 10) || 0;
var total = currentCalc + currentSum;
$('tr.' + getIdentClass + ' td.totalEURm').text(total);
if (index === 6) {
alert(total);
}
});
});
如果 parseInt 失败,则添加条件 currentCalc 并且 currentSum 将为0。 另外,就像上面的回答一样,我避免使用双 parseInt
你能举一个示例html页面试试吗?
答案 3 :(得分:0)
//SUM OF COLUMNS
var total = 0;
var identRow = $('tr.identRow');
identRow.each(function () {
var getIdentClass = $(this).attr('class').split(' ').slice(1);
$('tr.ohp' + getIdentClass + ' td.EURm').each(
function (index) {
var currentCalc = $(this).text().replace('.', '');
total = parseInt(currentCalc)+total;
$('tr.' + getIdentClass + ' td.totalEURm').text(total);
});
});
做了这个伎俩。
现在我只需要将总数设置为0,当它到达第二类时,因为此时它一直在从它停止的位置添加。虽然进步。谢谢你的一切