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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

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

Q&A

解決済

2回答

499閲覧

ボタンの色をリセットするボタンを作りたいです。

Tanaka

総合スコア3

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

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

0グッド

0クリップ

投稿2022/05/18 08:10

編集2022/05/18 08:20

イメージ説明
(上図解説)
左4個は押しても変化がない、
右9個は押すと(左から6番目のように)黒くなり、
再び押すと白に戻る。

この色の変わるボタンの色をリセットし、白に戻すリセットボタンを作りたい。
これ以外にも作っているサイトにはリセットボタンを作っているので、
「bodyの項目すべてをリセット」ではなくここだけをリセットしたい

ご依頼したいのは

・リセットボタンに関する部分のコード(主にスクリプトコード)
・その解説

です。
自分で書くとリセットボタンが反応せず、完全に手詰まって住まいました。
ネットで調べて色々くっつけて作ったものなので、他のコードのおかしなところも
ぜひ教えてください。

以下のHEMLコードは関係ありそうなところだけを抜き出し注釈を入れたものです

<head> <script type="text/javascript"> function func_test(obj) { if (obj.style.color == 'white') { obj.style.color = 'black'; obj.style.background = 'white'; } else { obj.style.color = 'white'; obj.style.background = 'black'; } } </script> <style type="text/css"> <!-- .item { width: 30px; height: 40px; border: 1px solid #ccc; background-color: white; color: black; border-bottom: 5px solid black; }   .noitem { width: 30px; height: 40px; border: 1px solid #ccc; background-color: white; border-bottom: 5px solid #ccc; } .noitem1 { width: 30px; height: 40px; border: 1px solid #ccc; background-color: #ccc; border-bottom: 5px solid #ccc; } --> </style> </head> <body> <script type="text/javascript"> //教えていただきたいリセットボタンのコード function OnButtonClick(obj) { document.getElementsByClassName("item").style.color = 'black'; document.getElementsByClassName("item").style.background = 'white'; } </script> <input type="button" id="button_sample" value="リセット" onclick="OnButtonClick(this)" /> <label> <div class="click-button"> <button class="noitem">&nbsp;</button> //ここの色は変化させたくない <button class="noitem">&nbsp;</button> //ここの色は変化させたくない <button class="noitem">&nbsp;</button> //ここの色は変化させたくない <button class="noitem1">&nbsp;</button> //ここの色は変化させたくない <button class="item" onclick="func_test(this)">&nbsp;</button> <button class="item" onclick="func_test(this)">&nbsp;</button> <button class="item" onclick="func_test(this)">&nbsp;</button> <button class="item" onclick="func_test(this)">&nbsp;</button> <button class="item" onclick="func_test(this)">&nbsp;</button> <button class="item" onclick="func_test(this)">&nbsp;</button> <button class="item" onclick="func_test(this)">&nbsp;</button> <button class="item" onclick="func_test(this)">&nbsp;</button> <button class="item" onclick="func_test(this)">&nbsp;</button> </div> </label> </body>

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

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

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

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

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

guest

回答2

0

html

1document.getElementsByClassName("item")

ここの取得結果ですが、class名で取得しているので、配列になります。

console.logで確認した内容

1HTMLCollection(9) [button.item, button.item, button.item, button.item, button.item, button.item, button.item, button.item, button.item] 20: button.item 31: button.item 42: button.item 53: button.item 64: button.item 75: button.item 86: button.item 97: button.item 108: button.item 11length: 9 12[[Prototype]]: HTMLCollection

なので、forループを使用して、styleを変更する必要があります。

js

1 <script type="text/javascript"> 2 function OnButtonClick(obj) { 3 let items = document.getElementsByClassName("item"); 4 for (let i = 0; i < items.length; i++) { 5 items[i].style.color = 'black'; 6 items[i].style.background = 'white'; 7 } 8 } 9 </script>

ご確認の方、よろしくお願いします。

投稿2022/05/18 08:29

k.a_teratail

総合スコア845

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

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

Tanaka

2022/05/18 08:55

ありがとうございます!JavaScript初心者なので助かります!
guest

0

ベストアンサー

こういうことですか?

javascript

1<script> 2function func_test(obj) { 3 obj.classList.toggle('black'); 4} 5function OnButtonClick(obj) { 6 obj.closest('div').querySelectorAll('.black').forEach(x=>x.classList.remove('black')); 7} 8</script> 9<style> 10.noitem{ 11 background-Color:white; 12} 13.item:not(.black){ 14 background-Color:white; 15} 16.item.black{ 17 background-Color:black; 18} 19</style> 20<div> 21<input type="button" id="button_sample" value="リセット" onclick="OnButtonClick(this)" /> 22<label> 23 <div class="click-button"> 24 <button class="noitem">&nbsp;</button> 25 <button class="noitem">&nbsp;</button> 26 <button class="noitem">&nbsp;</button> 27 <button class="noitem">&nbsp;</button> 28 <button class="item" onclick="func_test(this)">&nbsp;</button> 29 <button class="item" onclick="func_test(this)">&nbsp;</button> 30 <button class="item" onclick="func_test(this)">&nbsp;</button> 31 <button class="item" onclick="func_test(this)">&nbsp;</button> 32 <button class="item" onclick="func_test(this)">&nbsp;</button> 33 <button class="item" onclick="func_test(this)">&nbsp;</button> 34 <button class="item" onclick="func_test(this)">&nbsp;</button> 35 <button class="item" onclick="func_test(this)">&nbsp;</button> 36 <button class="item" onclick="func_test(this)">&nbsp;</button> 37 </div> 38</label> 39</div> 40<hr> 41<div> 42<input type="button" id="button_sample" value="リセット" onclick="OnButtonClick(this)" /> 43<label> 44 <div class="click-button"> 45 <button class="noitem">&nbsp;</button> 46 <button class="noitem">&nbsp;</button> 47 <button class="noitem">&nbsp;</button> 48 <button class="noitem">&nbsp;</button> 49 <button class="item" onclick="func_test(this)">&nbsp;</button> 50 <button class="item" onclick="func_test(this)">&nbsp;</button> 51 <button class="item" onclick="func_test(this)">&nbsp;</button> 52 <button class="item" onclick="func_test(this)">&nbsp;</button> 53 <button class="item" onclick="func_test(this)">&nbsp;</button> 54 <button class="item" onclick="func_test(this)">&nbsp;</button> 55 <button class="item" onclick="func_test(this)">&nbsp;</button> 56 <button class="item" onclick="func_test(this)">&nbsp;</button> 57 <button class="item" onclick="func_test(this)">&nbsp;</button> 58 </div> 59</label> 60</div>

投稿2022/05/18 08:23

yambejp

総合スコア114779

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

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

Tanaka

2022/05/18 08:56

わぁ!できた!ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問