Javascript 计算范围标记中某个值的百分比

Javascript 计算范围标记中某个值的百分比,javascript,html,Javascript,Html,我有一个包含下拉列表的表单,其中用户为每个问题选择“是”或“否”的值。在底部,它计算在跨度标记中选择为“是”的数量 例如,有没有一种方法可以使用Javascript计算第一个span标记中值的百分比。如果用户在24个问题中选择了12次是,则将值输出为50%? 这里是我的两个跨度标签的问题 <div class="Score"> Total Score = <span class="cnt-yes">0</span> out of 24 <b

我有一个包含下拉列表的表单,其中用户为每个问题选择“是”或“否”的值。在底部,它计算在跨度标记中选择为“是”的数量

例如,有没有一种方法可以使用Javascript计算第一个span标记中值的百分比。如果用户在24个问题中选择了12次是,则将值输出为50%?

这里是我的两个跨度标签的问题

  <div class="Score">
    Total Score  = <span class="cnt-yes">0</span> out of 24 <br>
  </div>

  <div class="Percentage">
    Audit Result = <span class="cnt-percent">0</span>% <br>
  </div>
}))

以下是前两个问题的选择标签作为示例

  <div id="hiddenQuestion1">
  <strong>1. Are the Team Players Wearing Gloves for the correct procedure?</strong> <select id="questions1" name="question1">
    <option value=""></option>
    <option value="Yes">Yes</option>
    <option value="No">No</option>
  </select><br><br>
  </div>

  <div id="hiddenQuestion2" style="display:none">
  <strong>2. Are Team Players using the ESD station and signing daily sheet?</strong> <select id="questions2" name="question2">
    <option value=""></option>
    <option value="Yes">Yes</option>
    <option value="No">No</option>
  </select><br><br>
  </div>

1。团队成员是否佩戴正确程序的手套?
对
不


2。团队成员是否使用ESD站并签署日报? 对 不


这是我使用vanilla Javascript所要做的:

constselects=[…document.querySelectorAll('select');
for(const select of selects){
select.value='';
select.addEventListener('change',()=>{
count.textContent=`${selects.filter(x=>x.value==='yes')。选定的${selects.length}中的${selects.length}的${yes'`;
percent.textContent=`${(selects.filter(x=>x.value==='yes').length/selects.length*100).toFixed(2)}%selected`;
})
}

对
不
对
不
对
不
对
不
对
不
对
不
对
不
对
不
对
不
对
不
对
不
对
不
对
不
对
不
对
不
对
不
对
不
对
不
对
不
对
不
$(函数(){
丘塞尔();
}); 
函数ch_sel(){
var target_span=$(“#span1”);
计数是否(目标范围);
}
函数计数\是\否(spn){
var yes=0;
var no=0;
var l=0;
spn.find('select')。每个(函数(){
如果($(this.val()='Yes'){Yes++;}
if($(this.val()='No'){No++;}
l++;
});
//更新计数值摘要
$('.cnt yes').text(yes);
$('.cnt no')。文本(no);
$('.len').text(parseInt(l));
$('.cnt-percent-y').text((是*100/l).toFixed(2));
$('.cnt-percent-n').text((编号*100/l).toFixed(2));
}

对
不
对
不
对
不
对
不
总分=24分中的0分
总分=24分中的0分
审核结果编号=0%
审核结果是=0%

您可以通过将肯定答案的数量除以问题总数,然后将结果乘以100来获得百分比。 因为这可能会导致一个浮点数,所以您应该在之后对结果进行四舍五入

12/24=0.5*100=50

所以在这个街区之后:

$.each(allSelects, function(i, s) {
    // increase count
    if($(s).val() == 'Yes') { yes++; }
    if($(s).val() == 'No') { no++; }
});
插入

var total=Math.round(yes/24*100);
$('.cnt-percent').text(total);

请添加你的
元素。解释你到底在做什么…?您已经有了
yes
no
计数器,因此除非有第三个选项可用,否则这两个计数器的总和应该是您拥有的选项总数。您也已经知道如何操作跨度的内容,那么您还缺少什么呢?计算百分比的数学很简单,不是吗?@Piyus建议外部代码站点不赞成StackOverflow。不要这样做。我刚刚要求演示,是不是错了?我不知道。演示应该使用堆栈片段完成。
var total=Math.round(yes/24*100);
$('.cnt-percent').text(total);