Javascript 从表格单元格中添加值

Javascript 从表格单元格中添加值,javascript,jquery,Javascript,Jquery,我有一个带有数字值的表格,它包含它的单元格 我的目标是通过单击表格单元格并获取它们的值,但在我随意单击时将它们相加。它应该跟踪总和,并将其显示在单独的div中 我已经编写了处理点击td的代码,并添加了一个类,其中包括更改背景颜色,以便用户可以看到他迄今为止点击的内容。因为类是动态添加的,所以我使用live() 然后我想在飞行中检查具有新类(称为选择)的td,并将它们相加 这是到目前为止我所掌握的代码,但是,首先,它并没有将它们相加,而是一个接一个地追加,并且以某种奇怪的顺序: $(documen

我有一个带有数字值的表格,它包含它的单元格

我的目标是通过单击表格单元格并获取它们的值,但在我随意单击时将它们相加。它应该跟踪总和,并将其显示在单独的
div

我已经编写了处理点击
td
的代码,并添加了一个类,其中包括更改背景颜色,以便用户可以看到他迄今为止点击的内容。因为类是动态添加的,所以我使用
live()

然后我想在飞行中检查具有新类(称为
选择
)的
td
,并将它们相加

这是到目前为止我所掌握的代码,但是,首先,它并没有将它们相加,而是一个接一个地追加,并且以某种奇怪的顺序:

$(document).ready(function() {
    total = '';

    $('td').click(function() {
        $(this).toggleClass('selecting');
        $('.selecting').live( {
            click: function() {
                if ($('td').hasClass('selecting')) {
                    total += $(this).html();
                }
            }
        })
        $('#feedback').text(total);
    });
})
接下来的一个步骤是,再次单击单击的
td
,该总和将减去再次单击单元格的值。所以,如果新单击,添加,如果再次单击,减法,但这就像是第二步,对我来说太难了,无法一次完成所有的第一步

total += +$(this).text();
将一个字符串添加到另一个字符串时,您正在连接。如果你想做加法,你需要处理数字。
+
将字符串更改为数字

此外,更改
total=''对于
total=0

将一个字符串添加到另一个字符串时,您正在连接。如果你想做加法,你需要处理数字。
+
将字符串更改为数字

此外,更改
total=''对于
total=0

尝试以下操作:

$('td').click(function() {
    var $td = $(this);
    var total = 0;
    $td.toggleClass('selecting');

    $(".selecting").each(function() {
       total += parseInt($(this).text(), 10);
    });

    $('#feedback span').text(total);
});

您将在代码中看到,对于每次单击,它都会完全重新计算总数,这就不需要在单击之间存储总数,这样您就可以减去单击的值。这使得逻辑简单得多

另外,我删除了
live()
,首先是因为
live()
现在已被弃用,不应使用,其次是因为您不需要使用它。

尝试以下操作:

$('td').click(function() {
    var $td = $(this);
    var total = 0;
    $td.toggleClass('selecting');

    $(".selecting").each(function() {
       total += parseInt($(this).text(), 10);
    });

    $('#feedback span').text(total);
});

您将在代码中看到,对于每次单击,它都会完全重新计算总数,这就不需要在单击之间存储总数,这样您就可以减去单击的值。这使得逻辑简单得多


另外,我删除了
live()
,首先是因为
live()
现在已被弃用,不应使用,其次是因为您不需要使用它。

另外,不要使用
live
。引用live文档中的一句话:“从jQuery 1.7开始,.live()方法已被弃用。请使用.on()来附加事件处理程序。较旧版本的jQuery用户应优先使用.delegate(),而不是.live()。请参阅另一个旁注:声明变量时使用
var
。如果不这样做,您的变量将隐式变为全局变量。另外,不要使用
live
。引用live文档中的一句话:“从jQuery 1.7开始,.live()方法已被弃用。请使用.on()来附加事件处理程序。较旧版本的jQuery用户应优先使用.delegate(),而不是.live()。请参阅另一个旁注:声明变量时使用
var
。如果您不这样做,您的变量将隐式变为全局变量。谢谢您,这解决了一件重要的事情,我只是不知道如何将其转化为数字。我很乐意给你一些有用的评论,但我的声誉甚至不到15分,所以他们不让我这么做。谢谢你,这解决了一件重要的事情,我只是不知道如何把它变成数字。我很乐意给你一些有用的评论,但我的声誉甚至没有15分,所以他们不让我这么做。