我正在处理将要计算数据的页面
如果我使用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;
答案 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
循环内动态显示。
+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];
}