Рассчитать среднее значение тд в каждом тр - PullRequest
0 голосов
/ 17 ноября 2018

Я хочу вычислить среднее class='dtb' с помощью ввода .toan, .ly, .hoa в каждой строке таблицы.

Моя скрипка здесь

Проблемы: Он просто вычисляет первую строку таблицы, а затем помещает результат в другие строки ниже, а не в каждую строку таблицы.

$(document).ready(function () {
    $('#outputtable > tbody > tr').each(function () {
        var toan = parseInt($('.toan').html());
        var ly = parseInt($('.ly').html());
        var hoa = parseInt($('.hoa').html());
        var dtb = ((toan + ly + hoa) / 3);
        $(this).find('.dtb').html(dtb.toFixed(1));
    });
});

Ответы [ 3 ]

0 голосов
/ 17 ноября 2018

Вы можете изменить здесь:

$('#outputtable > tbody > tr').each(function () {
  var tr = $(this);

  var toan = +tr.find('.toan').text();
  var ly = +tr.find('.ly').text();
  var hoa = +tr.find('.hoa').text();
  var dtb = (toan + ly + hoa) / 3;

  tr.find('.dtb').html(dtb.toFixed(1));
});

Используя $(this) внутри каждой функции (в данном случае), она присваивается текущему элементу tr. Из этого элемента вы найдете элемент, у которого есть класс с именем toan - ly - hoa.

Чтобы получить текст внутри каждого тега td, вам просто нужно использовать метод .text() (не нужно использовать метод .html()).

Чтобы преобразовать строку в число (в вашем случае), вы можете просто использовать

+$(this).find('.toan').text();

нет необходимости использовать parseInt метод. Это лучше для удобства чтения.

0 голосов
/ 17 ноября 2018

Я видел твой код скрипки ,

Изменить этот код добавляемой строки таблицы

 $("#outputtable").find("tbody:last").append("<tr><td>"+ stt +"</td><td class='ten'>"+_ten+"</td><td class='toan'>"+_toan+"</td><td class='ly'>"+_ly+"</td><td class='hoa'>"+_hoa+"</td><td class='dtb'>?</td></tr>");

Кому:

$("#outputtable").append("<tr><td>"+ stt +"</td><td class='ten'>"+_ten+"</td><td class='toan'>"+_toan+"</td><td class='ly'>"+_ly+"</td><td class='hoa'>"+_hoa+"</td><td class='dtb'>?</td></tr>");

А этот код среднего расчета:

$(document).ready(function () {
    $('#outputtable > tbody > tr').each(function () {
        var toan = parseInt($(this).find('.toan').html());
        var ly = parseInt($(this).find('.ly').html());
        var hoa = parseInt($(this).find('.hoa').html());
        var dtb = ((toan + ly + hoa) / 3);
        $(this).find('.dtb').html(dtb.toFixed(1));
    });
});

Кому:

    $("#tinhdtb").on('click', () => {
         $('#outputtable > tbody > tr').each(function () {
    debugger;
        var toan = parseInt($(this).find('.toan').html());
        var ly = parseInt($(this).find('.ly').html());
        var hoa = parseInt($(this).find('.hoa').html());
        var dtb = ((toan + ly + hoa) / 3);
        $(this).find('.dtb').html(dtb.toFixed(1));

    });
});
0 голосов
/ 17 ноября 2018

Вам нужно найти экземпляр каждого из входных классов в строке

$('.toan').html() всегда будет возвращать значение первого элемента этого класса, найденного на всей странице

Вместо этого используйтеfind()

var toan = parseInt($(this).find('.toan').html());
...