首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与jquery不工作的和

与jquery不工作的和
EN

Stack Overflow用户
提问于 2016-07-19 11:18:19
回答 6查看 270关注 0票数 0

如一页所示,我有很多标签。我想对这些值进行求和,并将它们存储在final_cpa中。

HTML :

代码语言:javascript
复制
<label class="tmpcpa">32.1</label>

JS :

代码语言:javascript
复制
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

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2016-07-19 11:21:04

因为label没有value属性,所以.val()函数总是返回一个空字符串,所以您必须使用.text()来获取label元素中的文本内容:

代码语言:javascript
复制
if ($(this).val() != 0) {

应:

代码语言:javascript
复制
if ($(this).text() != 0) {

注意:正如在下面的评论中所提到的,总是返回string,所以最好将零状态改为string '0'

希望这能有所帮助。

代码语言:javascript
复制
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();
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label class="tmpcpa">32.1</label>

票数 3
EN

Stack Overflow用户

发布于 2016-07-19 11:20:42

检查$(this).text() != ""而不是$(this).val() != 0,因为您不能使用.val()获取标签文本。( .text()会给你标签的文本

代码语言:javascript
复制
if ($(this).text() != "" && $(this).text() != "0") { 
....
}
票数 1
EN

Stack Overflow用户

发布于 2016-07-19 11:23:01

首先,您需要使用.text()而不是.val()来获取标签中的文本。此外,如果您期望您的结果包含十进制数字,则需要使用parseFloat()

代码语言:javascript
复制
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();
代码语言:javascript
复制
<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>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38457024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档