我有一个由tr和td组成的表格,我显示了第三个td中售出的门票百分比。每当我写"Mytext"而不是数字并且计算错误时,我的代码都会出现问题,而且它显示无穷大而不是显示写入百分比。如何定义 td 是否有"mytext"而不是数字,在已售列中设置最接近的数字而不是该文本,然后计算?例如,如果可用列中有 Mytext,销售列中有 5,则用文本替换 5,然后计算?这是我的代码:
$('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+/);
$(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>
Mytext<br>
10<br/>
</td>
<td>
5<br/>
2<br/>
</td>
<td>
<span class="result"></span><br/>
<span class="result"></span><br/>
</td>
</tr>
</tbody>
</table>
删除available
列中的正则表达式编号,然后检查值是否等于Mytext
更改它
$('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) {
//change starts here
let v = $('td:nth-child(1)', $this).text().trim().split(/r?n/);
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) + '%');
}
//change ends here
});
})
<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>
Mytext<br>
10<br/>
</td>
<td>
5<br/>
2<br/>
</td>
<td>
<span class="result"></span><br/>
<span class="result"></span><br/>
</td>
</tr>
</tbody>
</table>