【问题标题】:Multiply all td values(numbers) from a table with 3.8将表中的所有 td 值(数字)乘以 3.8
【发布时间】:2018-12-31 22:27:48
【问题描述】:

我的桌子在这里http://jsfiddle.net/wqk7Lauz/

我只需要在页面加载时将 td:nth-of-type(3) 中的所有值乘以 3.8。

HTML

$('td:nth-of-type(3)').text(parseFloat($('td:nth-of-type(3)').text()) * 3.8)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table class="table table-bordered mydatatable table-hover display responsive nowrap">
  <tbody>
    <tr>
    </tr>
    <tr>
      <th>ID</th>
      <th>Nome</th>
      <th>Preço por 1000</th>
      <th>Quantidade mínima</th>
      <th>Quantidade máxima</th>
      <th>Descrição</th>
    </tr>
    <tr>
      <td>9</td>
      <td>Product </td>
      <td>
        R$1.86
      </td>
      <td>100</td>
      <td>10000</td>
      <td>S1 </td>
    </tr>
    <tr>
      <td>10</td>
      <td>Product </td>
      <td>
        R$3.98
      </td>
      <td>1000</td>
      <td>100000</td>
      <td>S1</td>
    </tr>
  </tbody>
</table>

【问题讨论】:

  • 如果下面的任何答案回答了您的问题,Stack Overflow 的工作方式,您可以通过单击旁边的复选标记“接受”该答案; details here。但前提是你的问题得到了回答。 :-)

标签: php jquery html html-table


【解决方案1】:

你非常接近,你只需要使用text的回调版本,所以你只处理每个单独元素的文本,并删除开头的R$

$('td:nth-of-type(3)').text(function() {
    return parseFloat($(this).text().replace("R$", "")) * 3.8;
});

例子:

$('td:nth-of-type(3)').text(function() {
    return parseFloat($(this).text().replace("R$", "")) * 3.8;
});
<table class="table table-bordered mydatatable table-hover display responsive nowrap">
  <tbody>
    <tr>
    </tr>
    <tr>
      <th>ID</th>
      <th>Nome</th>
      <th>Preço por 1000</th>
      <th>Quantidade mínima</th>
      <th>Quantidade máxima</th>
      <th>Descrição</th>
    </tr>
    <tr>
      <td>9</td>
      <td>Product </td>
      <td>
        R$1.86
      </td>
      <td>100</td>
      <td>10000</td>
      <td>S1 </td>
    </tr>
    <tr>
      <td>10</td>
      <td>Product </td>
      <td>
        R$3.98
      </td>
      <td>1000</td>
      <td>100000</td>
      <td>S1</td>
    </tr>
  </tbody>
</table>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

如果您想重新添加R$,并且可能将结果限制在特定数量的位置,您可以使用字符串连接和toFixed

$('td:nth-of-type(3)').text(function() {
    return "R$" + (parseFloat($(this).text().replace("R$", "")) * 3.8).toFixed(2);
});

例子:

$('td:nth-of-type(3)').text(function() {
    return "R$" + (parseFloat($(this).text().replace("R$", "")) * 3.8).toFixed(2);
});
<table class="table table-bordered mydatatable table-hover display responsive nowrap">
  <tbody>
    <tr>
    </tr>
    <tr>
      <th>ID</th>
      <th>Nome</th>
      <th>Preço por 1000</th>
      <th>Quantidade mínima</th>
      <th>Quantidade máxima</th>
      <th>Descrição</th>
    </tr>
    <tr>
      <td>9</td>
      <td>Product </td>
      <td>
        R$1.86
      </td>
      <td>100</td>
      <td>10000</td>
      <td>S1 </td>
    </tr>
    <tr>
      <td>10</td>
      <td>Product </td>
      <td>
        R$3.98
      </td>
      <td>1000</td>
      <td>100000</td>
      <td>S1</td>
    </tr>
  </tbody>
</table>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

【讨论】:

  • 我得到 NaN 可能是因为货币符号?结果也必须有 2 位小数。谢谢 !!!! jsfiddle.net/wqk7Lauz/6
  • @kkossasa - 是的,parseFloat("R$123")NaN,因为parseFloat 停在第一个非数字非.,即R"Also result must have 2 decimals" 很好,上面的第二个代码示例应该可以做到。 :-)
  • 如果您使用提供给text() 函数的第二个参数,则可以避免使用$(this).text()
【解决方案2】:

你好用这个改变你的脚本函数

$(".table tr td:nth-child(3)").each(function(){ //Loop
 //alert($(this).text()) 
  var thrdtd = $(this).text(); //Getting value of td

  onlyno = thrdtd.replace('R$', ''); // Removing R$

  //akert(thrdtd);
  $(this).text('R$ '+ parseFloat(onlyno * 3.8).toFixed(2)) // Adding R$ and also multiplying at the same time and update that result to td again

});

首先,我通过循环获取每三个 td 值的值

$(".table tr td:nth-child(3)").each(function(){

然后在相乘之前从中删除字符,然后在相乘之后更新相同的 td 值

【讨论】:

    【解决方案3】:

    您可以使用以下代码:

    $('td:nth-of-type(3)').text("R$" + (parseFloat($(this).text().replace("R$", "")) * 3.8).toFixed(2));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-20
      • 2013-12-31
      • 1970-01-01
      • 1970-01-01
      • 2023-02-07
      • 2013-11-05
      相关资源
      最近更新 更多