我有一张由<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>
答案 0 :(得分:0)
我想你应该尝试一下。
$(element).html(Math.round((parseInt(td2Value[index]) * 100 / parseInt(v[index])) || 0) + '%');
如果你想要十进制答案,你应该尝试parseFloat()而不是parseInt()
答案 1 :(得分:0)
您需要更改标记,以便将5
和2
保留在不同的行中,以便在进行计算时不会将它们作为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个单元格
$('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;