私はHTMLページにネストされたチェックボックスを実装するために、次のようにcodepen snippetを使用しました。元のコードは、ネストされたチェックボックスの1つのセットのみを処理したので、複数に展開しようとしました。しかし、この場合の最後のMain要素では、Main2
では動作しますが、前の要素では動作していないようです。複数のメインオプションでネストされたチェックボックスが動作しない
function loadExpandableCheckboxes() {
\t
\t var expandableCheckboxes = document.getElementsByClassName("expandable-checkbox");
\t for (var i = 0; i < expandableCheckboxes.length; i++) {
\t \t
\t \t var checkboxMainOption = expandableCheckboxes[i].getElementsByClassName("expandable-checkbox-main-option")[0];
\t \t
\t \t var checkboxSubOptions = expandableCheckboxes[i].getElementsByClassName("expandable-checkbox-sub-option");
\t \t for (var j = 0; j < checkboxSubOptions.length; j++) {
\t \t \t
\t \t \t checkboxSubOptions[j].onclick = function() {
\t \t \t \t
\t \t \t \t var checkedCount = 0;
\t \t \t \t for (var k = 0; k < checkboxSubOptions.length; k++) {
\t \t \t \t \t if (checkboxSubOptions[k].checked) {
\t \t \t \t \t \t checkedCount++;
\t \t \t \t \t }
\t \t \t \t }
\t \t \t \t
\t \t \t \t checkboxMainOption.checked = checkedCount > 0;
\t \t \t \t checkboxMainOption.indeterminate = checkedCount > 0 && checkedCount < checkboxSubOptions.length;
\t \t \t }
\t \t }
\t \t
\t \t checkboxMainOption.onclick = function() {
\t \t \t
\t \t \t for (var j = 0; j < checkboxSubOptions.length; j++) {
\t \t \t \t checkboxSubOptions[j].checked = checkboxMainOption.checked;
\t \t \t }
\t \t }
\t }
}
onload=loadExpandableCheckboxes;
body {
color: #555;
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
}
ul {
list-style: none;
}
li {
margin-top: 1em;
}
label {
font-weight: bold;
}
<html>
<head>
\t <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
</head>
<body>
<div class="checkbox-container">
<ul>
<li>
\t \t <div class="expandable-checkbox">
<label><input type="checkbox" class="expandable-checkbox-main-option">Main 1</label>
<ul>
<li><label><input type="checkbox" class="expandable-checkbox-sub-option">Main 1 Sub 1</label></li>
<li><label><input type="checkbox" class="expandable-checkbox-sub-option">Main 1 Sub 2</label></li>
<li><label><input type="checkbox" class="expandable-checkbox-sub-option">Main 1 Sub 3</label></li>
</ul>
\t \t </div>
</li>
<li>
\t \t <div class="expandable-checkbox">
<label><input type="checkbox" class="expandable-checkbox-main-option">Main 2</label>
<ul>
<li><label><input type="checkbox" class="expandable-checkbox-sub-option">Main 2 Sub 1</label></li>
<li><label><input type="checkbox" class="expandable-checkbox-sub-option">Main 2 Sub 2</label></li>
<li><label><input type="checkbox" class="expandable-checkbox-sub-option">Main 2 Sub 3</label></li>
</ul>
\t \t </div>
</li>
</ul>
</div>
\t
</body>
</html>
私は私が見る – TheLethalCoder
サブのチェックボックスをクリックしたときにこれがあり一部の方法ですが、それは動作しません - 私は私の答えを更新しました。それはあなたが探しているものですか? –
これはうまくいきます – TheLethalCoder