循环通过单选按钮,然后将总数相加

嗨,
希望有人可以帮助,我需要能够保持一个运行的单选按钮选定的总数,作为一个用户通过一组16个问题,分为4个目录,然后在"提交"有总数量显示在屏幕上,或"提交"循环通过选定的单选按钮和得到总数.
我现在所拥有的将遍历所有按钮,然后将所有总数相加,我如何才能让此代码仅将"选中"按钮相加在一起?
谢谢艾伦:)

选择 | 换行 | 行号
  1. ..
  2.  
  3. <script type="text/javascript">
  4.  
  5. function showTotal(form, totalEl)
  6. {
  7. var el, els = form.elements;
  8. var sum = 0;
  9.  
  10. for (var i=0, num=els.length; i<num; ++i){
  11. el = els[i];
  12.  
  13. // need to only add up checked radio buttons?
  14. if ('radio' == el.type && /SumB/.test(el.name)){
  15. sum += +el.value;
  16. }
  17. form.elements[totalEl].value = sum;
  18. }
  19. }
  20. </script>
  21. </head>
  22.  
  23. <body>
  24.  
  25.  
  26. <form action=""><div>
  27. First set of questions:<br>
  28. Question group 1: <input type="radio" name="SumB_myquestion1" value="5" checked><br>
  29. Question group 1: <input type="radio" name="SumB_myquestion1" value="10"><br>
  30. Question group 1: <input type="radio" name="SumB_myquestion1" value="15"><br>
  31. Question group 1: <input type="radio" name="SumB_myquestion1" value="20"><br>
  32. <br>
  33. Second set of questions:<br>
  34. Question group 2: <input type="radio" name="SumB_myquestion2" value="5" checked><br>
  35. Question group 2: <input type="radio" name="SumB_myquestion2" value="10"><br>
  36. Question group 2: <input type="radio" name="SumB_myquestion2" value="15"><br>
  37. Question group 2: <input type="radio" name="SumB_myquestion2" value="20"><br>
  38. <br>
  39.  
  40. <input type="button" value="Show total" onclick="showTotal(this.form, 'formTotal');">&nbsp;
  41. <br>
  42. <br>
  43.  
  44. <input type="text" name="formTotal" readonly size="20"> is your score.<br>
  45. <br>
  46.  </div></form> 
  47. ..
# 回答1


检查这行.....

选择 | 换行 | 行号
  1. sum = 0; //sum must be initialized as zero
  2. .
  3. .
  4. //sum += +el.value; .... what does it mean?
  5. //i think it will be .......
  6. sum += parseInt(el.value);
  7. //or
  8. sum += parseFloat(el.value); //if your fraction number system is there
  9.  

德贝斯·亚纳

# 回答2


嗨,
我已经按照建议更改了,但我得到的答案仍然是'100',这是所有单选按钮的总和,可能还有更好的方法来做到这一点,我对建议持开放态度!
艾伦
# 回答3


嗨...
你总是把所有的值都加起来.同时检查选中的属性:

选择 | 换行 | 行号
  1. if ('radio' == el.type && /SumB/.test(el.name) && el.checked) {
  2.     // your code
  3. }

使用+等同于parseFloat或parseInt...它强制类型转换,因此您的第一个发布的代码应该可以与该更改一起工作.但是使用正确的解析方法可以简化阅读:)
致以亲切的问候

# 回答4


现在一切正常,感谢您的帮助和支持.
艾伦
# 回答5


嗨...
很高兴听到你让它工作了:)...当你有更多的问题时,随时回帖到论坛…
致以亲切的问候

标签: Javascript

添加新评论