我有这个html:
<td>
<div class="status">10</div>
<span class="fa fa-times-circle"></span>
</td>
我有下面的脚本,如果文本为 <30,则将"状态"类覆盖为 1,如果文本为>30,则为 0。在上述情况下,类状态为 10,所以我需要它来覆盖并指示 1。我拥有的脚本没有这样做。谁能帮忙?
$.each($('tr .status'), function(i, v) {
var $this = $(this).text();
if($this > 0) {
($this < 30) ? $(this).text('1') : $(this).text('0');
}
});
$.each($('.status'), function(i, v) {
var $this =parseInt( $(this).text());
if ($this > 0) {
($this < 30) ? $(this).text('1'): $(this).text('0');
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="status">10</div>
<span class="fa fa-times-circle"></span>
- 解析要比较的文本
你正在将文本与数字进行比较,这将给出一些时髦的输出。尝试执行以下操作:
$.each($('tr .status'), function(i, v) {
var $this = $(this);
var value = Number($this.text());
if(value > 0 && !== isNaN(value)) {
(value < 30) ? $this.text('1') : $this.text('0');
}
});
这样,您可以将值强制为数字。
在你的代码中你使用的是tr .status
但在你的 HTML 中它是一个 DIV,所以它应该是div.status
的,你也应该使用 parseInt()
,因为$(this).text()
会给你一个字符串,而不是一个整数。
https://jsfiddle.net/sbyc4mfp/
看看这段 JavaScript:
$('tr .status')
此级联不适合您的 HTML 代码。将级联更改为
$('td .status')
或在 HTML 中将 td 标记更改为 tr 标记。