divをチェックするjavascriptバージョン(jQueryよりもはるかに高速)
デフォルト変数を def 変数に設定します。
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script>
window.onload=function(){
var d=document,
changed=false,
change=function(){
var c=0,l=cb.length;
while(l--){if(cb[l].checked!==def[l]){c++}};
changed=c>0;
},
check=function(){
alert(changed?'something changed':'nothing changed');
changed=false;
},
cb=d.querySelectorAll('input[type=checkbox]'),
l=cb.length,
def=[];
while(l--){def[l]=cb[l].checked};
d.getElementsByTagName('div')[0].addEventListener('change',change,false);
d.getElementById('saveButton').addEventListener('click',check,false);
}
</script>
</head>
<body>
<div>
<label><input type="checkbox" checked>First</label>
<label><input type="checkbox">Second</label>
<label><input type="checkbox" checked>Third</label>
<input id="saveButton" type="button" value="Save">
</div>
</body>
</html>
このバージョンは、元に戻しても変更をチェックするだけです。ループなし、複数のチェックなし、jQuery なし
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script>
window.onload=function(){
var changed=false,
h=function(){
changed=true;
},
check=function(){
alert(changed?'something changed':'nothing changed');
changed=false;
};
document.getElementsByTagName('div')[0].addEventListener('change',h,false);
document.getElementById('saveButton').addEventListener('click',check,false);
}
</script>
</head>
<body>
<div>
<label><input type="checkbox" checked>First</label>
<label><input type="checkbox">Second</label>
<label><input type="checkbox" checked>Third</label>
<input id="saveButton" type="button" value="Save">
</div>
</body>
</html>