質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

2回答

1470閲覧

checkboxがoffになったら、実行解除をしたい

退会済みユーザー

退会済みユーザー

総合スコア0

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2020/09/09 03:33

編集2020/09/09 03:43

現在のコードはcheckboxにクリックを入れると、一回実行されてそのままの状態になっていますが、checkboxのon,offの判定をして、onなら実行されて、offなら実行が解除される事が理想です。

checkboxだけの書き方がいいのですが、調べても、formありきの書き方しか出てきません。

解決方法が分かる方、教えて頂きたいです。

html

1 2<!DOCTYPE html> 3<html lang="ja"> 4 5<head> 6 <meta charset="UTF-8"> 7</head> 8 9<body> 10 <p>サンプル 11 <div class="hako" id="box" style="border: solid 1px black;width:100px;height:50px;"></div> 12<div class="hako1" id="box1" style="border: solid 1px black;width:100px;height:50px;"></div> 13 14<div class="hako2"id="box2" style="border: solid 1px black;width:100px;height:50px;"></div> 15 <input type="checkbox" onclick="hakoClick()">メニュー1 16 <input type="checkbox" onclick="hakoClick1()">メニュー2 17 <input type="checkbox" onclick="hakoClick2()">メニュー3 18 <script> 19 function hakoClick() { 20 irobako = document.getElementById("box"); 21 irobako.style.backgroundColor = "black"; 22 } 23 24 function hakoClick1() { 25 irobako = document.getElementById("box1"); 26 irobako.style.backgroundColor = "red"; 27 } 28 29 function hakoClick2() { 30 irobako = document.getElementById("box2"); 31 irobako.style.backgroundColor = "blue"; 32 } 33 </script> 34</body> 35</html> 36

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

checkboxがoffになったら、実行解除をしたい

実行解除 では、コードを読むまで、「着色の切り替え」と分からないです。
要件は明記したほうが、コードを読んでみようという回答者が増える気がします。

解決方法が分かる方、教えて頂きたいです。

CSS のセレクタを用いて子孫を探索する querySelector(), querySelectorAll() や 先祖をたどる
closest() を使ってください。


input[type=checkbox] に data-for属性を持たせ、div#id の id属性値を与える例

html

1<style> 2 .hako, .hako1, .hako2 { 3 border: solid 1px black;width:100px;height:50px; 4 } 5</style> 6 7<p>サンプル</p> 8<div class="hako" id="box"></div> 9<div class="hako1" id="box1"></div> 10<div class="hako2"id="box2"></div> 11<label><input type="checkbox" data-for="box">メニュー1</label> 12<label><input type="checkbox" data-for="box1">メニュー2</label> 13<label><input type="checkbox" data-for="box2">メニュー3</label> 14 15<script> 16 const 17 // helpers 18 qs = selector => document.querySelector(selector), 19 qsa = selector => document.querySelectorAll(selector), 20 // color by boxId 21 colors = { 22 box: "black", 23 box1: "red", 24 box2: "blue" 25 } 26 ; 27 for( let attachTarget of qsa('input[data-for]') ) { 28 29 attachTarget.addEventListener('click', function ( evt ) { 30 let 31 target = evt.target, // input[data-for="box"] 32 id = target.dataset.for // data-for属性値 33 ; 34 // div#box の色を変える(三項演算/条件演算) 35 qs( `#${id}` ).style.backgroundColor = target.checked ? colors[id]: "initial"; 36 }); 37 38 }; // for of 39</script>

前回のご質問 では <input>内の onclick属性 を使わずに実現したいと読みとれましたので、style 属性も <style> タグでまとめ、「装飾」「文書構造」「ロジック」に分けてみました。

投稿2020/09/09 06:10

AkitoshiManabe

総合スコア5432

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

前回もお伝えしたとおり、処理が競合(上書)しています
特定のチェックをしたらほかをチェックできないようにするとか
ほかのチェックを取り消すなどの処理が必要です

投稿2020/09/09 03:35

編集2020/09/09 03:36
yambejp

総合スコア114779

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2020/09/09 03:42 編集

<script> window.addEventListener('DOMContentLoaded', ()=>{ const box=document.querySelector('#box'); const menu=document.querySelectorAll('.menu'); menu.forEach(x=>{ x.addEventListener('change',()=>{ box.style.backgroundColor=x.checked?x.dataset["color"]:"initial"; [...menu].filter(y=>y!==x).forEach(x=>x.checked=false); }); }); }); </script> <p>サンプル</p> <div class="hako" id="box" style="border: solid 1px black;width:100px;height:50px;"></div> <label><input type="checkbox" class="menu" data-color="black">メニュー1</label> <label><input type="checkbox" class="menu" data-color="red">メニュー2</label> <label><input type="checkbox" class="menu" data-color="blue">メニュー3</label>
退会済みユーザー

退会済みユーザー

2020/09/09 03:45

処理の上書きを見て、編集したのですが、これで大丈夫ということでしょうか?
yambejp

2020/09/09 03:54

私が例示したのはラジオボタンのような排他的挙動です
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問