簡體   English   中英

如何計算使用數組檢查的復選框的數量

[英]How to count the number of checkboxes checked using an array

我正在嘗試使用數組中的信息來獲取選中的復選框的數量,但是我一直在不確定。 我必須使用一個數組,一個開關,並且必須在此項目的JavaScript中使用。 我不能使用任何其他編程語言。

如何獲得正確添加復選框的功能? 我也不確定如何實現對此功能的切換。+

請幫忙,我已經為此工作了大約4個小時,在各處搜索以找到有用的答案。

我的HTML

<!DOCTYPE html>
<html lang="en">
<head>
<title>Project</title>
</head>
<body>

<form id="frmCareer" method="get" action="prjFormEvent.js">
<table id="tblCareer">

<th>Directions: Check of the items you think you would enjoy in each section.<br /> Mark as many items that apply.</th>

<tr><td><strong><label id="lblRealistic">
"R" Section</label></strong>
<div id="realisticTotal"></div>
<br />
<input type="checkbox"
name="chkRealistic"
onclick="getRealistic()"
value="chkRealistic1">Repair a car
<br />
<input type="checkbox"
name="chkRealistic"
onclick="getRealistic()"
value="chkRealistic2">Do wood working
<br />
<input type="checkbox"
name="chkRealistic"
onclick="getRealistic()"
value="chkRealistic3">Refinish furniture
<br />
<input type="checkbox"
name="chkRealistic"
onclick="getRealistic()"
value="chkRealistic4">Explore a forest
<br />
</tr></td>

      </table><!--End of tblWhichCareer-->
   </form><!--End of frmWhichCareer-->

</body>
</html>

我的JavaScript

Global Variables
var getCareer = new Array();
getCareer["chkRealistic1"] = 1;
getCareer["chkRealistic2"] = 1;
getCareer["chkRealistic3"] = 1;
getCareer["chkRealistic4"] = 1;

function getRealistic()
{
    var rTotal = 0;
    var selectedRealistic = document.forms["frmCareer"]["chkRealistic"];

    rTotal = getCareer[selectedRealistic.value]

    document.getElementById("lblRealistic").innerHTML = rTotal+ "/9 Checked"
}//End of function getRealisticCareer()

嘗試使用:

document.getElementById("lblRealistic").innerHTML =  document.querySelectorAll('input[name="chkRealistic"]:checked').length + "/9 Checked";

嘗試這個:

function getRealistic()
{
var rTotal = 0;

for(i=0; i<document.forms[0].chkRealistic.length; i++){
    if(document.forms[0].chkRealistic.item(i).checked){
        rTotal++;
    }
}

document.getElementById("lblRealistic").innerHTML = rTotal+ "/9 Checked"
}

您錯過了這一行

var selectedRealistic = document.forms["frmCareer"]["chkRealistic"];

返回名稱為chkRealistic的復選框的數組(在您的示例中,全部為四個)。

不要將getCareer函數的結果分配給rTotal ,而應在selectedRealistic檢查中遍歷HTMLInput數組。 選中的屬性。

var rTotal = 0;
var selectedRealistic = document.forms["frmCareer"]["chkRealistic"];

for (var sel = 0; sel < selectedRealistic.length; sel++)
{
  if (selectedRealistic[sel].checked)
        rTotal += getCareer[selectedRealistic[sel].value]
}

document.getElementById("lblRealistic").innerHTML = rTotal+ "/9 Checked"

您可以在此處查看正在運行的示例: http : //codepen.io/pabloapa/pen/jPNPNg

在這里也可以在Plunker上嘗試一下: http ://plnkr.co/edit/085ZtojBgvumktHwQSGf?p=preview

<form id="frmCareer" method="get" action="prjFormEvent.js">
    <table id="tblCareer">
      <tr>
        <th>Directions: Check of the items you think you would enjoy in each section.
          <br />Mark as many items that apply.</th>
      </tr>
      <tr>
        <td><strong><label id="lblRealistic">
"R" Section</label></strong>
          <div id="realisticTotal"></div>
          <br />
          <input type="checkbox" name="chkRealistic" onchange="getRealistic(this)" value="chkRealistic1">Repair a car
          <br />
          <input type="checkbox" name="chkRealistic" onchange="getRealistic(this)" value="chkRealistic2">Do wood working
          <br />
          <input type="checkbox" name="chkRealistic" onchange="getRealistic(this)" value="chkRealistic3">Refinish furniture
          <br />
          <input type="checkbox" name="chkRealistic" onchange="getRealistic(this)" value="chkRealistic4">Explore a forest
          <br />
        </td>
      </tr>


    </table>
    <!--End of tblWhichCareer-->
  </form>
  <!--End of frmWhichCareer-->
  <script language="JavaScript">
    var getCareer = new Array();
    getCareer["chkRealistic1"] = 0;
    getCareer["chkRealistic2"] = 0;
    getCareer["chkRealistic3"] = 0;
    getCareer["chkRealistic4"] = 0;

    function getRealistic(cbox) {
      var rTotal = 0;
      var key = cbox.value;
      getCareer[key] = cbox.checked ? 1 : 0;

      for (var key in getCareer) {
        rTotal += getCareer[key];

      }

      document.getElementById("lblRealistic").innerHTML = rTotal + "/9 Checked"
    } //End of function getRealisticCareer()
  </script>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM