実現したいこと
- 横並びのボタンをクリックすると、ボタンの色がCSSで指定の色に変化する
- 別のボタンを押下すると、元々押下したボタンの色が戻っている
前提
HTML内にJavascriptのコードを<script>内に記します。
横並びに配置されたボタン3つは、クリックすると該当のボタンが色を変え、また別のボタンを押下すると最初に色が変わったボタンは色が戻り、新たに押下したボタンの色が変わる、という流れを組み込みたいです。
CSSにはボタンを押す前の色と押した後の色もそれぞれ記しています。
ボタン一個だけであれば色を変えることができるのですが、class単位で動かそうとすると動作が反応しなく、原因がわからない状態です。
jQueryは今回使用しないです。
初歩的な質問で恐縮ですが、idgetElementByIdで動いたものが、getElementsByClassNameだと動作が反応しないのがどうしてなんかがわからなくて困っています。
発生している問題・エラーメッセージ
検証で押してもエラーが出ないです。
該当のソースコード
HTML
1<div id="wrapper"> 2 <div id="button1" class="button"> 3 <p>button</p> 4 </div> 5 6 <div id="button2" class="button"> 7 <p>button</p> 8 </div> 9 10 <div id="button3" class="button"> 11 <p>button</p> 12 </div> 13 </div>
Javascript
1 <script> 2 function buttonClick(n) { 3 document.getElementsByClassName("button").classList.toggle("on"); 4 } 5 6 let button = document.getElementsByClassName("button"); 7 button.onclick = buttonClick; 8 9 </script>
CSS
1.button { 2 margin: 0 20px; 3 width: 300px; 4 height: 150px; 5 background-color: #fdd; 6 cursor: pointer; 7} 8/* ボタン押下時 */ 9.on { 10 background-color: #f00; 11} 12 13.button p { 14 line-height: 180px; 15 font-size: 32px; 16 text-align: center; 17}
試したこと
<script>内では、全体ではなく一部に色がつけるかどうかを最初に試し、document.getElementByClassName("button")の箇所を、getEmelentById("button1")、documentの箇所も同様にした際は、ボタンを押下した際に赤色に変色しました。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/07/16 04:56