チェックボックスがオンまたはオフのときに関数を実行したい。ただし、約70個のチェックボックスがあります。それらはすべてdiv内にあります。変更されたコマンドのいずれかに反応する1つのコマンドを作成するにはどうすればよいですか?
質問する
223 次
2 に答える
2
イベントがバブルアップするので、onchangeハンドラーをdivにアタッチしてe.target
、変更されたチェックボックスを取得するために使用できます。これの簡単な例を次に示します。
HTML:
<div id="checkbox-container">
<input type="checkbox" name="one" />
<input type="checkbox" name="two" />
<input type="checkbox" name="three" />
<input type="checkbox" name="pizza" />
</div>
<strong> Javascript:
document.getElementById('checkbox-container').onchange = function(e){
alert(e.target.name);
}
于 2012-06-13T00:13:42.097 に答える
1
ascii-timeの回答に基づいて、イベント委任を使用できます。ただし、変更イベントはすべてのブラウザーでバブルするわけではなく、IEイベントモデルもサポートする必要があることに注意してください。したがって、クリックイベントを使用して、不要な要素を除外します(または代替応答を追加します)。
<div id="checkbox-container">
<input type="checkbox" name="one">
<input type="checkbox" name="two">
<input type="checkbox" name="three">
<input type="checkbox" name="pizza">
</div>
<script type="text/javascript">
(function() {
var container = document.getElementById('checkbox-container');
if (container) {
container.onclick = function(evt) {
evt = evt || window.event;
var el = evt.target || evt.srcElement;
if (el && el.nodeType == 1 && el.type == 'checkbox') {
alert(el.name + ' is ' + (el.checked? '':'not') + ' checked');
}
}
}
}())
</script>
スクリプトはcontainer要素の下にある必要があることに注意してください。クロージングボディタグの直前が良いです。
于 2012-06-13T00:32:24.223 に答える