チェックボックスを全てチェックするには?

[上に] [前に] [次に]
ゆーき 2000/03/06(月) 18:54:49
チェックボックスが複数あったとして、ボタンを一つを押すことで全てをチェック済みにするようなことはできるのでしょうか。

安芸川晴海 2000/03/06(月) 20:38:26
とりあえず、こんな感じでいかがでしょうか。


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html lang="ja" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>絵を選択する</title>
<script language="JavaScript" type="text/javascript">
<!--
function checkall()
{
document.forms[0].c1.checked=true;
document.forms[0].c2.checked=true;
document.forms[0].c3.checked=true;
}
function checkall2()
{
var i=0;
var j;
if(navigator.appName=="Microsoft Internet Explorer")
{
i=1;
}
for(j=0;j<3;j++)
{
document.forms[0].elements[i+j].checked=true;
}
}
// -->
</script>
</head>
<body>
<form action="データの送り先">
<fieldset>
<legend>チェック群1</legend>
<input type="checkbox" value="項目1" name="c1">
<input type="checkbox" value="項目2" name="c2">
<input type="checkbox" value="項目3" name="c3">
<input type="button" value="check boxes" onclick="checkall();">
</fieldset>
</form>
</body>
</html>

チェック用の関数は2タイプ用意しています。IEは困ったことにlegend要素をformのelementsに数えるらしいので、checkall2()には、ブラウザ依存部分があります。ただし、手元にIE3がないので確認できませんでしたが、ひょっとするとIE3はこの調整が不要かもしれません。
動作確認したのは、Internet Explorer 5.0、Netscape Navigator 4.6、HotJava 3.0です。
私はJavascriptには無知なので、これが正しいのか良くわかりませんが(無知ならあちこち口を出すな、と言われそうですが。すみません。でしゃばりで)、とりあえずそんな感じです。

shin' 2000/03/06(月) 22:47:25
ほとんどのformオブジェクトに属するオブジェクトはtypeという
プロパティを持っているので、
あるFormオブジェクトのelementsコレクションをforで回して、
type="checkbox"であれば、それのcheckedをtrueにする。
という方法でいいと思います。
Netscape3で動きます。

ゆーき 2000/03/07(火) 14:06:05
[[解決]]
親切なご返答ありがとうございました。
試行錯誤の末なんとかできました。

[上に] [前に] [次に]