更简单的ParseInt方式

时间:2018-02-06 14:19:10

标签: javascript radio-button parseint

我正在处理将要计算数据的页面

如果我使用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 个答案:

答案 0 :(得分:1)

如果您不需要存储单个值,请使用loop template string作为索引:

var BDI_score = 0;

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

答案 1 :(得分:0)

您可以使用数组数据结构来存储所有值,然后在数组上循环以将值解析为整数并对其求和。

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中(比数字14小1),因为name = st16始终位于索引15中,依此类推。

答案 2 :(得分:0)

如果您以后需要它们,可以将结果存储在数组中,并使选择器在for循环内动态显示。

+varvar转换为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];
}
相关问题