完全に初心者です。。
下記のスクリプトをもとに、
■チェックAをチェックしたら全てチェックされる
■またチェックAをチェックしたら全て外れる
ようにしたいです。。
でも何がダメか分かりません。。
一部を書くのではなく出来ればスクリプト全ていただけたらと思います。
あともし宜しければチェックAをチェックしたら、1~6をチェックできないようにもしたいです。。
ご教授よろしくお願いします。。
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<TITLE></TITLE>
<SCRIPT language="JavaScript">
function check(){
for(i=1; i<7; i++){
document.form1.elements[ch[i]].checked = true;
}
}
</SCRIPT>
</HEAD>
<BODY>
全てのチェックボックスをチェック/解除
<FORM name="form1">
<p><INPUT type="checkbox" id="ch" onclick="check()">チェックA</p>
<INPUT type="checkbox" id="ch1">チェック1
<INPUT type="checkbox" id="ch2">チェック2
<INPUT type="checkbox" id="ch3">チェック3<BR><BR>
<INPUT type="checkbox" id="ch4">チェック4
<INPUT type="checkbox" id="ch5">チェック5
<INPUT type="checkbox" id="ch6">チェック6<BR><BR>
<BR>
</FORM>
</BODY>
</HTML>
No.3ベストアンサー
- 回答日時:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<title>TEST</title>
<style type="text/css">
fieldset{ width:600px; margin:1em;}
</style>
<form>
<fieldset>
<legend>女性に目がいくポイント(<input type="checkbox" onClick="allchk(this,1)">すべてを選択)</legend>
<input type="checkbox" id="ch00"><label for="ch00">顔</label>
<input type="checkbox" id="ch01"><label for="ch01">首筋</label>
<input type="checkbox" id="ch02"><label for="ch02">胸元</label>
<input type="checkbox" id="ch03"><label for="ch03">腰のくびれ</label>
<input type="checkbox" id="ch04"><label for="ch04">太もも</label>
<input type="checkbox" id="ch05"><label for="ch05">足首</label>
</fieldset>
<fieldset>
<legend>すれ違いざまのアクション(<input type="checkbox" onClick="allchk(this,0)">すべてを選択)</legend>
<input type="checkbox" id="ch10"><label for="ch10">触れる</label>
<input type="checkbox" id="ch11"><label for="ch11">クドク</label>
<input type="checkbox" id="ch12"><label for="ch12">ガン見</label>
<input type="checkbox" id="ch13"><label for="ch13">ちら見くびれ</label>
<input type="checkbox" id="ch14"><label for="ch14">無視</label>
<input type="checkbox" id="ch15"><label for="ch15">後姿をまじまじと</label>
</fieldset>
<hr>
<div>
<p>
<input type="checkbox" onClick="allchk(this,0)">すべてを選択
すべてのチェックさせるきっかけのタグは、<p>のようなタグで囲む。<br>
そしてチェックさせたいものはすべて、その親の<div>で囲むことが条件。
</p>
<input type="checkbox" id="ch20"><label for="ch20">触れる</label>
<input type="checkbox" id="ch21"><label for="ch21">クドク</label>
<input type="checkbox" id="ch22"><label for="ch22">ガン見</label>
<input type="checkbox" id="ch23"><label for="ch23">ちら見くびれ</label>
<input type="checkbox" id="ch24"><label for="ch24">無視</label>
<input type="checkbox" id="ch25"><label for="ch25">後姿をまじまじと</label>
</div>
</form>
<script type="text/javascript">
function allchk(element, flag){
var objs = element.parentNode.parentNode.getElementsByTagName('input');
var i=0,o,v;
while( o=objs[i++] ) if( o.type == 'checkbox' && o != element ){
v = element.checked;
o.checked = v;
o.disabled = flag? v: false;
}
}
</script>
No.8
- 回答日時:
そして再考しました。
cssを(class="xxx")を利用しています<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<title>TEST</title>
<style type="text/css">
fieldset { width:600px; margin:1em;}
</style>
<form>
<fieldset>
<legend>女性に目がいくポイント(<input type="checkbox" class="allcheck">すべてを選択)</legend>
<input type="checkbox" id="ch00" class="chk"><label for="ch00">顔</label>
<input type="checkbox" id="ch01" class="chk"><label for="ch01">首筋</label>
<input type="checkbox" id="ch02" class="chk"><label for="ch02">胸元</label>
<input type="checkbox" id="ch03" class="chk"><label for="ch03">腰のくびれ</label>
<input type="checkbox" id="ch04" class="chk"><label for="ch04">太もも</label>
<input type="checkbox" id="ch05" class="chk"><label for="ch05">足首</label>
</fieldset>
</form>
<hr>
<div>
※<input type="checkbox" class="allcheck">すべてを選択(
<input type="checkbox" id="ch10" class="chk"><label for="ch10">顔</label>
<input type="checkbox" id="ch11" class="chk"><label for="ch11">首筋</label>
<input type="checkbox" id="ch12" class="chk"><label for="ch12">胸元</label>
<input type="checkbox" id="ch13" class="chk"><label for="ch13">腰のくびれ</label>
<input type="checkbox" id="ch14" class="chk"><label for="ch14">太もも</label>
<input type="checkbox" id="ch15" class="chk"><label for="ch15">足首</label>
)
</div>
<script type="text/javascript">
document.body./*@cc_on @if(1)attachEvent('on'+ @else@*/addEventListener(/*@end@*/'click', function(evt){
var element = evt.target || evt.srcElement;
var pnode = parentSearch( element, 'FIELDSET' ) || parentSearch( element, 'DIV' ); if(!pnode) return;
var chkboxs = pnode.getElementsByTagName('input');
var i=0,o,t;
if( element.className.match(/\ballcheck\b/) )
while( o=chkboxs[i++] ) if(o!=element) o.checked = element.checked;
if( element.className.match(/\bchk\b/) ){
while( o=chkboxs[i++] ) if( o.className && o.className.match(/\ballcheck\b/) ) t=o.checked;
if(t){
element.checked = t;
alert('すべてを選択がチェックされているため変更できません');
}
}
}, false);
function parentSearch(elementId, tagname){
var element = ( typeof( elementId ) == 'string' )? document.getElementById( elementId ): elementId;
while( element.tagName != tagname ){
if(element.tagName == 'BODY') return false;
element = element.parentNode;
} return element;
}
</script>
No.7
- 回答日時:
この辺はまだ調べ方が足りませんが
obj.from[n] は JS の性質を考えるとあまりしないほうがいいかもしれません。
obj.form.elements.item(n)
elements は name でも、index でもどちらでもアクセスできる仕様になっているはずです。
それから、要素を無効にする手段ですが、return false などでデフォルト動作を切ってしまうより、 disabled でユーザーに対して使用不可であることを知らせたほうが良いと思います。
disabled は、チェック無効にするとともに値の送出も無効にする。それを考えると return false か、
理由がない限り、無効にしないほうがよいと思います。
No.6
- 回答日時:
ご指摘ありがとうございます。
でっ、自分なりに考えました。
不透明なオブジェクトをかぶせてみました!
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<title>TEST</title>
<style type="text/css">
fieldset { width:600px; margin:1em;}
</style>
<form>
<fieldset>
<legend>女性に目がいくポイント(<input type="checkbox" onClick="allchk(this,'ch')">すべてを選択)</legend>
<div id="ch" >
<input type="checkbox" id="ch00"><label for="ch00">顔</label>
<input type="checkbox" id="ch01"><label for="ch01">首筋</label>
<input type="checkbox" id="ch02"><label for="ch02">胸元</label>
<input type="checkbox" id="ch03"><label for="ch03">腰のくびれ</label>
<input type="checkbox" id="ch04"><label for="ch04">太もも</label>
<input type="checkbox" id="ch05"><label for="ch05">足首</label>
</div>
</fieldset>
</form>
<script type="text/javascript">
function allchk(element, wrap){
var objs = element.parentNode.parentNode.getElementsByTagName('input');
var i=0,o,v;
while( o=objs[i++] ) if( o.type == 'checkbox' && o != element ){
v = element.checked;
o.checked = v;
if( wrap && v){
if( !document.getElementById( wrap+'_wrap')) wrapping( wrap +'_wrap', wrap, '#fff', 50 );
else document.getElementById( wrap+'_wrap' ).style.display='block';
} else {
document.getElementById( wrap+'_wrap' ).style.display='none';
}
}
}
function wrapping( newId, elementId, backcolor, opacity ){
var element = ( typeof( elementId ) == 'string' )? document.getElementById( elementId ): elementId;
var wrap = document.createElement('div');
if( opacity == undefined ) opacity = 50;
if( backcolor == undefined ) backcolor = '#ffffff';
wrap.id = newId;
with( wrap.style ){
position = 'absolute';
backgroundColor = backcolor;
/*@cc_on @if(1) filter = 'alpha(opacity='+ opacity+ ')'; @else @*/
MozOpacity = (opacity / 100);
opacity = (opacity / 100);/*@end@*/
var b = element.getBoundingClientRect();
top = b.top + 'px';
left = b.left + 'px';
width = element.offsetWidth + 'px';
height = element.offsetHeight + 'px';
}
return element.appendChild( wrap );
}
</script>
No.5
- 回答日時:
いくつか・・・
Aをチェックして、disabledをいじるのはお勧めしません。
disabledになっている時点で、意味合いとしてはチェックしている
こと自体が無効であると同意です。
Aをチェックするとその他のチェックが外れないようにするのを
希望するならdisableではなくonclickでfalseを返すという処理になります。
<script type="text/javascript">
function check(obj){
var f=obj.form;
for(i=0; i<f.length; i++){
if(f[i].type=="checkbox" && f[i]!=obj){
f[i].checked= obj.checked;
f[i].flg= !obj.checked;
f[i].onclick=function(){return this.flg;}
}
}
}
</script>
<form>
<p>
<input type="checkbox" id="ch" onclick="check(this)"><label for="ch">チェックA</label>
</p>
<p>
<input type="checkbox" id="ch1"><label for="ch1">チェック1</label>
<input type="checkbox" id="ch2"><label for="ch2">チェック2</label>
<input type="checkbox" id="ch3"><label for="ch3">チェック3</label>
</p>
<p>
<input type="checkbox" id="ch4"><label for="ch4">チェック4</label>
<input type="checkbox" id="ch5"><label for="ch5">チェック5</label>
<input type="checkbox" id="ch6"><label for="ch6">チェック6</label>
</p>
</form>
ただし、Aをチェックをして、すべてをチェックをしたあと、
それぞれのチェックをかえられないというのは効率的ではありません。
普通は、一つ一つチェックするのが面倒なので、一気にチェックし
あとは個別で外すってのが妥当なやり方でしょう。
ってことで#1の回答で十分かと。
No.2
- 回答日時:
きっと書き忘れだと思うけど
if(f[i].type=="checkbox" && f[i]!=obj) f[i].checked= obj.checked;
は、
if(f[i].type=="checkbox" && f[i]!=obj) f[i].disabled = f[i].checked= obj.checked;
する予定だったと思うよ!
この回答への補足
yambejpさん、pipiさん本当にありがとうございます!!
正直すごいです!!
希望通りのご回答ありがとうございます!!
わがまま言って申し訳ないんですが、
教えていただいたのは、チェックできなくなるようになるものなんですが、
ただ、Aにチェックしたら1~6にチェックするだけのスクリプトはどんな感じになるんですか??
出来ましたら form1.elements[・・・] で作っていただけたらと思います。。本当にわがままですいません。。
No.1
- 回答日時:
form1.elements[・・・]でやるならnameをつけてやるとよいでしょう
まぁそれとは別にこんな感じでやると汎用性が高いかと。
<script type="text/javascript">
function check(obj){
var f=obj.form;
for(i=0; i<f.length; i++){
if(f[i].type=="checkbox" && f[i]!=obj) f[i].checked= obj.checked;
}
}
</script>
<form>
<p>
<input type="checkbox" id="ch" onclick="check(this)"><label for="ch">チェックA</label>
</p>
<p>
<input type="checkbox" id="ch1"><label for="ch1">チェック1</label>
<input type="checkbox" id="ch2"><label for="ch2">チェック2</label>
<input type="checkbox" id="ch3"><label for="ch3">チェック3</label>
</p>
<p>
<input type="checkbox" id="ch4"><label for="ch4">チェック4</label>
<input type="checkbox" id="ch5"><label for="ch5">チェック5</label>
<input type="checkbox" id="ch6"><label for="ch6">チェック6</label>
</p>
</form>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
チェックボックスのON/OFFでVal...
-
チェックボックスの設定
-
チェックボックスのON/OFFに応...
-
チェックボックスが複数ある場...
-
ラジオボタンの選択でチェック...
-
複数あるチェックボックスから...
-
チェックボックスに全てチェッ...
-
フォームのチェックボックスの...
-
form の checkbox の配列 name ...
-
スクリプト内でチェックボック...
-
複数のチェックボックス項目が...
-
EclipseでSpringを使用し、テー...
-
return trueとreturn falseの用...
-
プルダウン 項目が多いので先頭...
-
【jQuery】input nameの文字列...
-
特定<table>内の<td>の色を変える
-
3桁区切りのカンマをつけたい...
-
追加ボタンを押した際に ok ボ...
-
javascriptのちょっとした動作...
-
hiddenのvalueの値を変えたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【jsp/Java】チェックボックス...
-
チェックボックスのON/OFFでVal...
-
チェックボックスのON/OFFに応...
-
複数のチェックボックス項目が...
-
checkboxをクリックしてリロー...
-
チェックボックスの設定
-
チェックボックスで指定したも...
-
フォームのチェックボックスの...
-
チェックボックス
-
配列のチェックボックスをjavas...
-
一つのチェックボックスのON/OF...
-
チェックボックスが複数ある場...
-
スクリプト内でチェックボック...
-
特定のID(またはクラス)で括ら...
-
チェックボックスに連動するテ...
-
<input type="checkbox" checke...
-
チェックボックスに全てチェッ...
-
Nameは配列で、チェックされた...
-
EclipseでSpringを使用し、テー...
-
チェックボックスとラジオボタ...
おすすめ情報