使用 Javascript 使用相同的 ID 选中复选框

Making checkboxes checked using same id using Javascript

这是我的代码,用于检查具有相同 ID 的复选框

<input type="checkbox" name="MassApprove" value="setuju2"  />
<input type="checkbox" name="MassApprove" value="setuju3"  />
<input type="checkbox" name="MassApprove" value="setuju4"  />
<input type="checkbox" name="MassApprove" value="setuju5"  />
<input type="submit" value="Next Step" name="next" />

这是我的 javascript 代码。我需要在触发此功能时选中此复选框。帮帮我!..

    function doMassApprove(massApproveFlag) {
        var confirmAlert = confirm("Do You Need Mass Approve !..");
        var massApprove = document.getElementById("MassApprove").length();
        if (confirmAlert == true) {
            //alert(massApproveFlag);
            for (var i = 0; i < massApprove; i++) {
                document.getElementById("MassApprove").checked = true;
            }
        } else {
            document.getElementById("headerMassApprove").checked = false;
        }
    }

HTML 中的 ID 必须是唯一的。

因为您已经指定了名称 MassApprove,请使用 Document.getElementsByName()

Returns a nodelist collection with a given name in the (X)HTML document.

您可以使用简单的 for 循环进行迭代

function doMassApprove(massApproveFlag) {
    var confirmAlert = confirm("Do You Need Mass Approve !..");

    if (confirmAlert) {
        //Get elements with Name
        var massApproves = document.getElementsByName("MassApprove");

        //Iterate and set checked property
        for (var i = 0; i < massApprove.length; i++) {
            massApproves[i].checked = true;
        }
    } else {
        document.getElementById("headerMassApprove").checked = false;
    }
}
  1. 您没有相同的 ID,也不应该,因为 ID 必须是唯一的。您有相同的 NAME,这很好。 -
  2. 不要使用 getElementById 作为名称,而是使用 document.getElementsByName 这将 return 一个可以循环的集合

像这样

function doMassApprove(massApproveFlag) {
    var massApprove = confirm("Do You Need Mass Approve !..");
    if (massApprove) {
      var checks = document.getElementsByName("MassApprove");
      for (var i=0; i < checks.length; i++) {
          checks[i].checked = massApprove; // or perhaps massApproveFlag?
      }
    }
    else {
      document.getElementById("headerMassApprove").checked = false;
    }
}

只是为了好玩,您可以使用一些现代浏览器的优点:

Array.prototype.forEach.call(document.querySelectorAll('[name=MassApprove]'), function(cb){cb.checked = true});

并带有箭头函数:

 Array.prototype.forEach.call(document.querySelectorAll('[name=MassApprove]'), cb => cb.checked=true);