1

我有一个 id=main 的表...希望将每行中的两个单元格添加在一起,然后对另一行执行相同操作等等。但是,虽然我已经设法为第一行这样做,但所有结果单元格在以下行中是相同的。例如,表格中所有单元格的“测试”= 102.9...顺便说一句,一直在研究.each()但不确定如何实现..

<tr id='main'>
<td class='rtng'>100</td>
<td class='win'>2.90</td>
<td class='test'></td></tr>

<tr id='main'>
<td class='rtng'>95</td>
<td class='win'>4.25</td>
<td class='test'></td></tr>

这是我的 jQuery

$(document).ready(function() {
    var num1 = $(".rtng").html();
    var num2 = $(".win").html();
    var result = parseFloat(num1) + parseFloat(num2);
    $(".test").html(result);
});​

另一次尝试

$(document).ready(function() {
    $('tr.rtng').each(function() {
        var num1 = $(".rtng").html();
        var num2 = $(".win").html();
        var result = parseFloat(num1) + parseFloat(num2);
        $(".test").html(result);
    });
});​

任何帮助都会很可爱:)

4

3 回答 3

3

首先,您的 HTML 无效。没有<table>元素,并且您使用了两次相同的 id - id 是唯一的。使您的 HTML 像这样:

<table id="tableMain">
    <tr>
        <td class='rtng'>100</td>
        <td class='win'>2.90</td>
        <td class='test'></td>
    </tr>
    <tr>
        <td class='rtng'>95</td>
        <td class='win'>4.25</td>
        <td class='test'></td>
    </tr>
</table>

然后在 jQuery 中:

$(document).ready(function() {         
    $('#tableMain tr').each(function() {
        var $this = $(this);
        $this.find('.test').text(parseFloat($this.find('.rtng').text()) + parseFloat($this.find('.win').text()));
    });
});​
于 2012-09-25T11:14:01.277 回答
0

您可以通过调用并传入计算正确值的函数来选择所有.test元素并设置其内容:.html()

$(".test").html(function () {
    // `this` refers to the current `.test` element...
    var num1 = parseFloat($(this).siblings(".rtng").html()),
        num2 = parseFloat($(this).siblings(".win").html());
    return num1 + num2;
});​​​​​

这是一个工作示例

旁注:正如其他人所提到的,id属性的值在文档中必须是唯一的。

于 2012-09-25T11:08:30.017 回答
0

首先,您两次使用了相同的 id,这会产生问题。给行唯一的 id 或将它们更改为类。假设你去上课,我会做类似的事情:

$('tr.main').each(function() {
    var num1 = $(this).children('.rtng').text();
    var num2 = $(this).children('.win').text();
    var result = parseFloat(num1) + parseFloat(num2);
    $(this).children('.test').text(result);
});

您需要在行的上下文中选择每个 td,因此子函数。

于 2012-09-25T11:14:36.733 回答