如一页所示,我有很多标签。我想对这些值进行求和,并将它们存储在final_cpa中。
HTML :
<label class="tmpcpa">32.1</label>JS :
function calculate_final_cpa() {
var final_cpa = 0;
var allfilled = false;
$('.tmpcpa').each(function () {
if ($(this).val() != 0) {
final_cpa += parseInt($(this).text()) || 0;
allfilled = true;
} else {
allfilled = false;
}
});
console.log(final_cpa);
console.log(allfilled);
}
var run = setInterval(calculate_final_cpa, 500);然而,final_cpa始终是0,而allfilled仍然是false。
发布于 2016-07-19 11:21:04
因为label没有value属性,所以.val()函数总是返回一个空字符串,所以您必须使用.text()来获取label元素中的文本内容:
if ($(this).val() != 0) {应:
if ($(this).text() != 0) {注意:正如在下面的评论中所提到的,总是返回string,所以最好将零状态改为string '0'。
希望这能有所帮助。
function calculate_final_cpa() {
var final_cpa = 0;
var allfilled = false;
$('.tmpcpa').each(function () {
if ($(this).text() != '0') {
final_cpa += parseInt($(this).text()) || 0;
allfilled = true;
} else {
allfilled = false;
}
});
console.log(final_cpa);
console.log(allfilled);
}
calculate_final_cpa();<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label class="tmpcpa">32.1</label>
发布于 2016-07-19 11:20:42
检查$(this).text() != ""而不是$(this).val() != 0,因为您不能使用.val()获取标签文本。( .text()会给你标签的文本
if ($(this).text() != "" && $(this).text() != "0") {
....
}发布于 2016-07-19 11:23:01
首先,您需要使用.text()而不是.val()来获取标签中的文本。此外,如果您期望您的结果包含十进制数字,则需要使用parseFloat():
function calculate_final_cpa() {
var final_cpa = 0;
var allfilled = false;
$('.tmpcpa').each(function () {
if ($(this).text() != 0) {
final_cpa += parseFloat($(this).text()) || 0;
allfilled = true;
} else {
allfilled = false;
}
});
console.log(final_cpa);
console.log(allfilled);
}
calculate_final_cpa();<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<label class="tmpcpa">32.1</label>
<br />
<label class="tmpcpa">32.1</label>
https://stackoverflow.com/questions/38457024
复制相似问题