复选框、存储在数组中并使用 switch 语句

Check Boxes, Store in Array and utilize switch statement

预先感谢回答此问题的任何人。

我需要帮助: 如何显示自动更新的select复选框的数量?例如:如果我select 1个来自SECTION A的复选框,它将显示来自SECTION A的1个。如果我select另一个框,它会自动显示 SECTION A 中的 2,但如果未选中该复选框,它也会减去该值。selected。有点像理货

再次感谢您的帮助和抽出时间。

    var infoArray=new Array();

function userSelection(userInput)
{
  var itemName = userInput.name;
  var itemName2 = userInput.value;

 switch(itemName)
 {
  case "sectionR":
 {
  switch(itemName2)
 {
  case "repair car":
       infoArray[0]=1;
  break;

  case "wood work":
       infoArray[0]=1;
  break;

  case "explore forest":
       infoArray[0]=1;
  //end of case "sectionR"
 }
  //end of sub switch
 }
  break;

   case "sectionA":
 {
  switch(itemName2)
 {
  case "clothing design":
       infoArray[1]=1;
  break;

  case "public singing":
       infoArray[1]=1;
  break;

  case "decorate":
       infoArray[1]=1;
  //end of sub switch
 }
 // end of case sectionA
 }
 //end of main switch
 }  
    var userOutput=new Array();
   for(var i=0; i<itemName.length; i++)
   {
      userOutput.push(itemName[i].checked);
   }

document.getElementById("selectionTotal").innerHTML = "R SECTION" + "&nbsp" + "," + "&nbspA SECTION" + "<br>" + 
infoArray;

 //end of userSelection() 
}

你函数的前两行有问题:

var userInput = document.getElementsByName('sectionR');
var userOutput = document.getElementsByName('sectionR').value;

首先,它可以写得更简单,更优雅:

var userInput = document.getElementsByName('sectionR');
var userOutput = userInput.value;

但这仍然会包含相同的错误。 document.getElementsByName("sectionR") returns 一个包含名称为 "sectionR" 的所有元素的数组。所以你不能从数组中获取值。您必须遍历元素:

var userOutput = []; // or var userOutput = new Array();
for (var i=0; i < userInput.length; i++) {
    userOutput.push(userInput[i].value);
}

现在您在数组 userOutput 中拥有名称为 "sectionR" 的所有元素的值,以后可以使用它们。

还有关于您的 for 循环的通知。您在没有关键字 var 的情况下声明 x=0。这使得变量 x 在全局范围内可见。如果您的代码较长并且您在代码的其他地方使用同名变量,它可能会导致一些意外行为。