javascript - 计算每个元素的百分比

标签 javascript jquery each percentage

我有以下代码来计算每个元素的百分比(如民意调查投票系统):

$(document).ready(function() {
    $("#percentage").click(function() {
        var number, sumNumbers = 0, newPercent;
    
        $(".item").each(function() {
            number = $(this).children(".itemNum").text();
            number = +number;

            sumNumbers += number;

            if(sumNumbers != 0) {
              newPercent = (number / sumNumbers) * 100;
            } else {
              newPercent = 0;
            }

            $(this).children(".percentage").text(newPercent+"%");
        });
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="item">
  <span class="itemNum">0</span> <span class="percentage"></span>
</div>

<div class="item">
  <span class="itemNum">2</span> <span class="percentage"></span>
</div>

<div class="item">
  <span class="itemNum">1</span> <span class="percentage"></span>
</div>

<button id="percentage">Calculate Percentage!</button>

但是,结果是:

0 0%
2 100%
1 33.33333333333333%

那么,如何计算返回以下结果呢?

0 0%
2 66.66666666666667%
1 33.33333333333333%

我需要这些结果来在我的投票系统上制作进度条,那么,如何做到这一点?

最佳答案

您需要通过parseInt()函数将文本解析为整数。

您需要先将数字相加,然后才能计算百分比。

对于一个循环问题:
您无法在一个循环中计算百分比。解释 here

$(document).ready(function() {
    $("#percentage").click(function() {
        var number, sumNumbers = 0, newPercent;
         $(".item").each(function(){
               number = $(this).children(".itemNum").text();
               sumNumbers += parseInt(number);
               
          });
        $(".item").each(function() {
            number = parseInt($(this).children(".itemNum").text());

            if(sumNumbers != 0) {
              newPercent = (number / sumNumbers) * 100;
            } else {
              newPercent = 0;
            }

            $(this).children(".percentage").text(newPercent+"%");
        });
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="item">
  <span class="itemNum">0</span> <span class="percentage"></span>
</div>

<div class="item">
  <span class="itemNum">2</span> <span class="percentage"></span>
</div>

<div class="item">
  <span class="itemNum">1</span> <span class="percentage"></span>
</div>

<button id="percentage">Calculate Percentage!</button>

关于javascript - 计算每个元素的百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36093269/

相关文章:

javascript - 如何一起使用 onmousedown 和 onchange

javascript - Chart.js 更新雷达图动画

javascript - SOAP 原型(prototype) Ajax SOAPAction header 问题

javascript - 检查是否加载了 iFrame。一度。查询

javascript - 从 PowerShell 脚本运行 javascript 文档

javascript - 如何从对象数组中获取特定的 JSON 元素 (jQuery)

jQuery:元素偏移量()坐标相对于另一个元素

javascript - jquery - 根据单击的过滤器选项和容器元素值中的匹配值过滤元素

jquery更新整个页面同名的类

javascript - 为什么我不能拆分一个字符串然后调用每个字符串?