• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:クリックで色変更後に既に変更された要素を戻すには)

JavaScriptを使用してクリックで色変更後に既に変更された要素を戻す方法

このQ&Aのポイント
  • JavaScriptを使用して、クリックで要素の色を変更する方法について学んでいます。
  • テーブルのブロックをクリックした時に他のブロックの色を元に戻す方法について知りたいです。
  • テーブルには100個以上のブロックがある場合、全てのブロックの色を戻すためには効率的な方法があるか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#137826
noname#137826
回答No.2

最後にクリックした要素のidをグローバル変数に保存するようにするのはどうでしょう? グローバル変数を使うのは安直ではありますが、複雑なことをしないのであれば以下のような単純な方法が簡便で良いのではないでしょうか。 <head> <title>test</title> <style type="text/css"> div { width: 100px; height: 100px; border: 1px solid #000; } </style> <script type="text/javascript"> var lastid = ""; function fn(e) { if (lastid.length) { document.getElementById(lastid).style.backgroundColor = "#fff"; } e.style.backgroundColor = "#f00"; lastid = e.id; } </script> </head> <body> <div id="00" onclick="fn(this)">00</div> <div id="01" onclick="fn(this)">01</div> <div id="02" onclick="fn(this)">02</div> </body> </html>

16a27
質問者

お礼

レス頂き感謝します。 ご教授してくださった方法で、手を加えましたところ 私が希望する通りの動作をしてくれました! 当方まだ勉強したてなもので、 分かりやすく記述例を作って頂いたことで、とても理解が早まりました。 大変嬉しいです。ありがとうございました<(__)>

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.1

1000個あるうちの200番目をクリックされたとき 1000個の色を元の色に変えて200番目を改めて色を変える とやると処理はともかく実装は楽ね。 処理を軽くするには 現在色が変わっている場所 というのを覚えておいて クリックしたらその場所を戻す クリックした場所を変える という風にするんだわ。

16a27
質問者

お礼

レス頂き感謝します。 >処理はともかく そうなんですよね。記述なら大量の単純作業ですが、 実行したときにやたら重い命令になってしまいます。 タグとしても整理できない汚れた感じがしますし・・ 「色の変わっている場所」のidを変数として格納して 格納された場所を直すという方法ですね。 アドバイス頂き、ありがとうございました<(__)>

すると、全ての回答が全文表示されます。

関連するQ&A