最后一个td中两个数字的错误百分比

时间:2017-10-16 12:30:49

标签: javascript jquery

我有一张由<tr><td>组成的表格,我在第三个<td>中显示售出的门票的百分比。此外,它还将mytext作为一个数字。我可以问题是代码计算错误的百分比。我认为这个问题来自html格式,如空格或标签。 我该怎么办? 这是我的片段:

$('table tbody tr').each(function() {
  var $this = this,
    td2Value = $('td:nth-child(2)', $this).text().trim().split(/\D+/);
  $('span.result', $this).each(function (index, element) {

    let v = $('td:nth-child(1)', $this).text().trim().split(/(\d+)/).filter(v => v);
    if(v[index] != null && v[index].trim() == "Mytext")
    {
       v[index] = td2Value[index];
    }
    if(v[index] != null )
    {
      $(element).html(Math.round((td2Value[index] * 100 / v[index]) || 0) + '%');
    }

  });
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<table border="1">
             <thead>
                <tr>
                  <th> avalable</th>
                  <th> sold</th>
                  <th>  result </th>
                </tr>
            </thead>
<tbody>
<tr>
<td>   
10<br/>Mytext<br/></td>
<td> 5<br/>2<br/></td>
<td>
<span class="result"></span><br/>
<span class="result"></span><br/>
</td>        
</tr>
</tbody>
</table>

3 个答案:

答案 0 :(得分:0)

我想你应该尝试一下。

$(element).html(Math.round((parseInt(td2Value[index]) * 100 / parseInt(v[index])) || 0) + '%');

如果你想要十进制答案,你应该尝试parseFloat()而不是parseInt()

答案 1 :(得分:0)

您需要更改标记,以便将52保留在不同的行中,以便在进行计算时不会将它们作为52一起拾取。

检查下面的演示

$('table tbody tr').each(function() {
  var $this = this,
    td2Value = $('td:nth-child(2)', $this).text().trim().split(/\D+/);
  $('span.result', $this).each(function(index, element) {

    let v = $('td:nth-child(1)', $this).text().trim().split(/(\d+)/).filter(v => v);
    if (v[index] != null && v[index].trim() == "Mytext") {
      v[index] = td2Value[index];
    }
    if (v[index] != null) {
      $(element).html(Math.round((td2Value[index] * 100 / v[index]) || 0) + '%');
    }

  });
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<table border="1">
  <thead>
    <tr>
      <th> avalable</th>
      <th> sold</th>
      <th> result </th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>10</td>
      <td>5</td>
      <td><span class="result"></span></td>
    </tr>
    <tr>
      <td>2</td>
      <td>2</td>
      <td><span class="result"></span></td>
    </tr>
  </tbody>
</table>

答案 2 :(得分:0)

你的表格标签是错误的。更改这样的表格。并添加如下的js代码。

使用cell one and two计算百分比,然后将结果发布到第3个单元格

&#13;
&#13;
$('table tbody tr').each(function() {
 var res = Math.round(parseInt($(this).find('td:eq(1)').text())/parseInt($(this).find('td:eq(0)').text())*100)
 res = !isNaN(res) ? res :0
 $(this).find('td:eq(2)').text(res+'%')

})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<table border="1">
  <thead>
    <tr>
      <th> avalable</th>
      <th> sold</th>
      <th> result </th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td> 10</td>
      <td> 5</td>
      <td> </td>
      <tr>
        <td>Mytext</td>
        <td>2</td>
        <td></td>
      </tr>

  </tbody>
</table>
&#13;
&#13;
&#13;