関心のあるすべての要素のリストを取得するだけで、それらに対して何らかのアクションを実行する必要があります。querySelectorAll 関数は実際には配列を返さないため、forEachNode 関数を追加しました。配列と同様の構文と機能を持つ nodeList を返しますが、forEach 関数は省略されています。
注: 属性がチェックされている場合、チェックボックスがチェックされます。属性の実際の値は使用されません。チェック状態を決定するのは、属性の存在または欠如だけです。そのため、checked 属性には 0 以外の値を書き込むことができます。
編集:上記のメモは正しくありません。html に表示される「checked」属性と「checked」メンバー変数の両方が状態を制御します。チェック解除機能とチェック機能を更新しました。
<!DOCTYPE html>
<html>
<head>
<script>
function byId(e){return document.getElementById(e);}
window.addEventListener('load', mInit, false);
function mInit()
{
}
/*
func to be called takes 3 variables. currentElement, currentIndex, nodeList the element belongs to.
*/
function forEachNode(nodeList, func)
{
var i, n = nodeList.length;
for (i=0; i<n; i++)
{
func(nodeList[i], i, nodeList);
}
}
/*
function uncheck(elem)
{
elem.removeAttribute('checked');
}
function check(elem)
{
elem.setAttribute('checked',0);
}
*/
function uncheck(elem)
{
elem.checked = false;
elem.removeAttribute('checked');
}
function check(elem)
{
elem.checked = true;
elem.setAttribute('checked',0);
}
function checkAll()
{
var checkBoxElements = document.querySelectorAll('input[type=checkbox]');
forEachNode(checkBoxElements, check);
}
function uncheckAll()
{
var checkBoxElements = document.querySelectorAll('input[type=checkbox]');
forEachNode(checkBoxElements, uncheck);
}
</script>
<style>
</style>
</head>
<body>
<button onclick='uncheckAll()'>Uncheck all</button>
<button onclick='checkAll()'>Check all</button>
<br>
<input type='checkbox'/>CB 1
<br>
<input type='checkbox'/>CB 2
<br>
<input type='checkbox'/>CB 3
<br>
<input type='checkbox'/>CB 4
<br>
<input type='checkbox'/>CB 5
<br>
</body>
</html>