javascriptで再起的に関数を使うには、for文では変数が重複してしまうので、foreach文を使いたいけど、foreach文というのがないので、単純には使えない。node配列にforeach文を使って、ツリー構造の要素を手繰っていく感じで使う方法。
階層構造のカテゴリで、上のカテゴリがチェックされると、紐づく下のカテゴリがすべてチェックされるということをやりたい。
「Array.prototype.forEach.call()」に配列と「function (node, index, nodeList) {}」の形の呼び出す関数を渡すことでforeach文のように使うことができる。処理は投入した関数の中で行う。
forEach文と同じように「node」と「 index」を使うことができるので、ちょっと面倒だけど普通に使える。
var elems = document.getElementsByTagName(“input”);
function chkchild(obj) {
Array.prototype.forEach.call(elems, function (node, index, nodeList) {
if (node.type == “checkbox” && node.id == obj.value){
if (obj.checked == true){
node.checked = “checked”;
}else{
node.checked = “”;
}
chkchild(node);}
});
}