用jQuery循环遍历表格-计算每一行的单元格

Looping through table with jQuery - calculating cell in for each row

本文关键字:一行 单元格 循环 jQuery 遍历 表格 计算      更新时间:2023-09-26

我有一个表,我想在jQuery中计算第六列。我可以通过类CTR来识别列。

    <table class="table">
         <tr>
            <td class="date">08-05-2014</td>
            <td class="spend">615,68</td>
            <td class="impressions">71996</td>
            <td class="clicks">30</td>
            <td class="leads">3</td>
            <td class="CTR">—</td>
            <td class="eCPM">—</td>
            <td class="eCPC">—</td>
            <td class="eCPL">—</td>
         </tr>
         <tr>
            <td class="date">09-05-2014</td>
            <td class="spend">1983,44</td>
            <td class="impressions">398429</td>
            <td class="clicks">115</td>
            <td class="leads">15</td>
            <td class="CTR">—</td>
            <td class="eCPM">—</td>
            <td class="eCPC">—</td>
            <td class="eCPL">—</td>
         </tr>
    </table>

我希望点击率计算为点击次数除以该给定行的展示次数。我已经尝试在jQuery中这样做,但代码不运行:

$( document ).ready(function() {
  $('table tr').each(function(index) {
  $this = $(this)
  var imps = $this.find("td.impressions").val();
  var clicks = $this.find("td.clicks").val();
  var ctr = $this.find("td.CTR").val();
  ctr = parseFloat(clicks) / parseFloat(imps) * 100;
  });
});

我做错了什么?-代码应该是什么样的?

(更新)

根据回复,我已经采纳了代码。

$( document ).ready(function() {
  $('tr').each(function(index) {
    $this = $(this)
    var imps = $this.find(".impressions").html();
    var clicks = $this.find(".clicks").html();
    $this.find(".CTR").html() = parseFloat(clicks) / parseFloat(imps);
  });
});

对于最后一行的赋值,控制台告诉我"Invalid left side in assignment"。

(解决)

$( document ).ready(function() {
  $('tr').each(function(index) {
    $this = $(this)
    var imps = $this.find(".impressions").text();
    var clicks = $this.find(".clicks").text();
    $this.find(".CTR").text(parseFloat(clicks) / parseFloat(imps) * 100);
  });
});

在td元素上调用val()不会返回内部html。它返回value属性。如果您试图在td元素中获取html,请像这样调用它:

$this.find("td.impressions").html();