更简单的方法ParseInt

By simon at 2018-02-07 • 0人收藏 • 49人看过

基本上,我正在这个网页上工作,要计算数据 如果我使用document.querySelector("[name=\"st1\"]:checked").value;这是字符串,所以我必须这样做 var res1 = document.querySelector("[name=\"st1\"]:checked").value; var res1_p = parseInt(res1); 但考虑到我有100个问题,需要很长时间。 我想知道是否有什么我可以做的改善/加快了 处理? 下面的完整代码

var res1 = document.querySelector("[name=\"st1\"]:checked").value;
                var res1_p = parseInt(res1);
            var res2 = document.querySelector("[name=\"st2\"]:checked").value;
                var res2_p = parseInt(res2);
            var res3 = document.querySelector("[name=\"st3\"]:checked").value;
                var res3_p = parseInt(res3);
            var res4 = document.querySelector("[name=\"st4\"]:checked").value;
                var res4_p = parseInt(res4);
            var res5 = document.querySelector("[name=\"st5\"]:checked").value;
                var res5_p = parseInt(res5);
            var res6 = document.querySelector("[name=\"st6\"]:checked").value;
                var res6_p = parseInt(res6);
            var res7 = document.querySelector("[name=\"st7\"]:checked").value;
                var res7_p = parseInt(res7);
            var res8 = document.querySelector("[name=\"st8\"]:checked").value;
                var res8_p = parseInt(res8);
            var res9 = document.querySelector("[name=\"st9\"]:checked").value;
                var res9_p = parseInt(res9);
            var res10 = document.querySelector("[name=\"st10\"]:checked").value;
                var res10_p = parseInt(res10);
            var res11 = document.querySelector("[name=\"st11\"]:checked").value;
                var res11_p = parseInt(res11);
            var res12 = document.querySelector("[name=\"st12\"]:checked").value;
                var res12_p = parseInt(res12);
            var res13 = document.querySelector("[name=\"st13\"]:checked").value;
                var res13_p = parseInt(res13);
            var res14 = document.querySelector("[name=\"st14\"]:checked").value;
                var res14_p = parseInt(res14);
            var res15 = document.querySelector("[name=\"st15\"]:checked").value;
                var res15_p = parseInt(res15);
            var res16 = document.querySelector("[name=\"st16\"]:checked").value;
                var res16_p = parseInt(res16);
            var res17 = document.querySelector("[name=\"st17\"]:checked").value;
                var res17_p = parseInt(res17);
            var res18 = document.querySelector("[name=\"st18\"]:checked").value;
                var res18_p = parseInt(res18);
            var res19 = document.querySelector("[name=\"st19\"]:checked").value;
                var res19_p = parseInt(res19);
            var res20 = document.querySelector("[name=\"st20\"]:checked").value;
                var res20_p = parseInt(res20);
            var res21 = document.querySelector("[name=\"st21\"]:checked").value;
                var res21_p = parseInt(res21);
        // Calculate 
            var BDI_score = res1_p + res2_p + res3_p + res4_p + res5_p + res6_p + res7_p + res8_p + res9_p + res10_p + res11_p + res12_p + res13_p + res14_p + res15_p + res16_p + res17_p + res18_p + res19_p + res20_p + res21_p;

3 个回复 | 最后更新于 2018-02-07
2018-02-07   #1

使用[循环](https://developer.mozilla.org/en- US / docs / Web / JavaScript / Reference / Statements / for)与[模板 字符串](HTTPS://developer.mozilla.org/en- US / docs / Web / JavaScript / Reference / Template_literals)为索引,如果你 不需要存储个人价值观:

var BDI_score = 0;

for(var i = 1; i <= 21; i++) {
  var res = document.querySelector(`[name="st${i}"]:checked`).value;
  BDI_score += parseInt(res);
}

2018-02-07   #2

你可以使用一个数组数据结构来存储所有的值,然后循环 数组将该值解析为整数并对其进行求和。

var resArray = [];
var BDI_score = 0;
for(var i=1; i<=22; i++){
  var elem = document.querySelector("[name=\"st"+i+"\"]:checked").value;
  resArray.push(parseInt(elem));
  BDI_score += resArray[i];
}
在resArray存储解析的值将帮助您获得的值 分别通过访问name数组的索引。例如: name = st14的值始终在索引13中(小于1 号码14),因为name = st16始终在索引15中,依此类推。

2018-02-07   #3

您可以将结果存储在数组中,如果您以后需要这些结果的话 使您的选择器在for厕所内动态页。 +var将var转换为Number,就像 parseInt(var)呢。

var arr = [];
var sum = 0;

for(var i=1; i<=100; i++){
  arr[i] = +document.querySelector("[name=\"st"+i+"\"]:checked").value;
  sum+= arr[i];
}

登录后方可回帖

Loading...