javascriptのお詳しい方にお願いがあります。
例えば
<input type="radio" name="choice"><label>選択1</label>
<input type="radio" name="choice"><label>選択2</label>
<input type="radio" name="choice ><label>選択3</label>
というボタンがあって、以下のような内容があった場合に
<p>本文本文本文
<span class="moji1">選択1の内容</span>
<span class="moji2">選択2の内容</span>
<span class="moji3">選択3の内容</span>
本文本文本文
<span class="moji1">選択1の内容</span>
<span class="moji2">選択2の内容</span>
<span class="moji3">選択3の内容</span>
本文本文本文本文本文。</p>
という内容(html)で「class="moji1」は最初から表示されていて、ボタンに応じてそれぞれに対応する(「選択2」が選択されたら「class="moji2"」)する内容だけが表示されるjavascriptはどう書けばよいのでしょうか?
いろいろjavascriptを紹介しているページを見ているのですが、これと言ったものがなく、またjavascriptの知識が殆ど無いため、お知恵をお貸しいただければと思います。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
追記の例であればこんな感じでいけます
body:has([name=choice][value=moji1]:not(:checked)) .moji1{display:none}
body:has([name=choice][value=moji2]:not(:checked)) .moji2{display:none}
body:has([name=choice][value=moji3]:not(:checked)) .moji3{display:none}
ご回答ありがとうございます。素晴らしい!!
確かにこれなら階層関係なく動きますね!
ついでに教えていただければありがたいのですが、例えば
<ul>
<li><label><input type="radio" name="choice" value="moji1" checked>選択1</label></li>
<li><label><input type="radio" name="choice" value="moji2" >選択2</label></li>
<li><label><input type="radio" name="choice" value="moji3">選択3</label></li>
</ul>
という場合で、チェックが入ったらラベルの背景を変えたり、ボーダーを入れたりする場合のCSSはどうなるのでしょうか?
もし、よろしければお教えただければと思います。
それにしてもCSSでここまでできるとは驚きです。
No.3
- 回答日時:
スクリプトでの実装をお考えであれば、まず以下のようなスタイルを用意して
<p class=honbun>
AAA
<span>BBB</span> ← 非表示
<span class="selected">CCC</span> ← 表示
</p>
<style>
.honbun span { display:none; } ← 非表示
.honbun span.selected { display:initial; } ← 表示
</style>
ページが読み込まれたり(load)、選択肢が変わったり(change)等の機会に、スクリプトにて selected のクラス名を付け外しをしましょう
let v = document.querySelector("input[name=choice]:checked").value;
document.querySelectorAll(".honbun span").forEach(c => c.classList.toggle("selected", c.classList.contains(v)));
ラベルのスタイルも変えたいならば、同様にラベルもクラス名を付け外しをしましょう
参考)
https://developer.mozilla.org/ja/docs/Web/CSS/di …
https://developer.mozilla.org/ja/docs/Web/API/El …
https://developer.mozilla.org/ja/docs/Web/API/Do …
https://developer.mozilla.org/ja/docs/Web/API/Do …
https://developer.mozilla.org/ja/docs/Learn/Java …
No.1
- 回答日時:
ラジオボタンはvalueを指定してください。
この程度の話であればjavascriptはいりません
<style>
label:has([name=choice][value=moji1]:not(:checked)) ~ * .moji1{display:none}
label:has([name=choice][value=moji2]:not(:checked)) ~ * .moji2{display:none}
label:has([name=choice][value=moji3]:not(:checked)) ~ * .moji3{display:none}
</style>
<label><input type="radio" name="choice" value="moji1" checked>選択1</label>
<label><input type="radio" name="choice" value="moji2" >選択2</label>
<label><input type="radio" name="choice" value="moji3">選択3</label>
<p>本文本文本文
<span class="moji1">選択1の内容</span>
<span class="moji2">選択2の内容</span>
<span class="moji3">選択3の内容</span>
本文本文本文
<span class="moji1">選択1の内容</span>
<span class="moji2">選択2の内容</span>
<span class="moji3">選択3の内容</span>
本文本文本文本文本文。</p>
ご回答ありがとうございます。とても参考になります。
ただ、今回は私の例えが悪かった(簡素化しすぎた)からだと思いますが、以下のような場合(「本文」がいろいろな階層に出てくる)ではCSSでは対応できないように思います。
<div class="change">
<ul>
<li><label><input type="radio" name="choice" value="moji1" checked>選択1</label></li>
<li><label><input type="radio" name="choice" value="moji2" >選択2</label></li>
<li><label><input type="radio" name="choice" value="moji3">選択3</label></li>
</ul>
</div>
<div class="honbun">
<p>本文本文本文
<span class="moji1">選択1の内容</span>
<span class="moji2">選択2の内容</span>
<span class="moji3">選択3の内容</span>
本文本文本文
<span class="moji1">選択1の内容</span>
<span class="moji2">選択2の内容</span>
<span class="moji3">選択3の内容</span>
本文本文本文本文本文。</p>
</div>
<div class="block"><!------←上と階層が違う--------->
<div class="honbun">
<p>本文本文本文
<span class="moji1">選択1の内容</span>
<span class="moji2">選択2の内容</span>
<span class="moji3">選択3の内容</span>
本文本文本文
<span class="moji1">選択1の内容</span>
<span class="moji2">選択2の内容</span>
<span class="moji3">選択3の内容</span>
本文本文本文本文本文。</p>
</div>
</div>
やっぱりjavascriptでないと駄目だと思うのです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- JavaScript Q&A掲示板の入力フォームに文字数制限を設けて入力可能な文字数を表示したい 1 2024/04/08 02:46
- JavaScript JavascriptでDom XSSの脆弱性対策を行いたい 2 2023/09/24 21:20
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- PHP アマゾンのような評価の星を選択した情報を確認画面でも表示させたいです。 1 2023/10/02 10:52
- PHP PHPとHTML+Xamppの掲示板で画像も投稿できるように 3 2024/04/27 09:33
- JavaScript JavascriptでXSSの脆弱性への対策を行いたい 2 2023/08/31 22:28
- JavaScript JavaScriptで作ったアプリが正常に動作しない。改善したい。 3 2024/01/06 16:33
このQ&Aを見た人はこんなQ&Aも見ています
-
【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
【お題】 ・存在しそうで存在しないモノマネ芸人の名前を教えてください
-
人生最悪の忘れ物
今までの人生での「最悪の忘れ物」を教えてください。 私の「最悪の忘れ物」は「財布」です。
-
初めて自分の家と他人の家が違う、と意識した時
子供の頃、友達の家に行くと「なんか自分の家と匂いが違うな?」って思いませんでしたか?
-
この人頭いいなと思ったエピソード
一緒にいたときに「この人頭いいな」と思ったエピソードを教えてください
-
好きな和訳タイトルを教えてください
洋書・洋画の素敵な和訳タイトルをたくさん知りたいです!【例】 『Wuthering Heights』→『嵐が丘』
-
javaScriptのコードの修正をお願いします。
JavaScript
-
プログラマーは誘惑にさらされる人生?
その他(プログラミング・Web制作)
-
excelをhtmlに変換した途端、一部フォントが変わるのはなぜでしょうか。
HTML・CSS
-
-
4
食材の期限を管理するためにGASを利用しようとしたのですがうまく動作してくれません
JavaScript
-
5
プログラミングについて プログラミングの練習(勉強)ができるようなサイトなどありませんか? あれば教
その他(プログラミング・Web制作)
-
6
文系のSE志望です。プログラミングを今から習得したいのですが、初めて学ぶのにオススメの言語があれば教
その他(プログラミング・Web制作)
-
7
鍵盤アプリで、スマホの画面に並んだ鍵盤をなぞった時に、触れた鍵が次々発火するようにするには
JavaScript
-
8
プログラミングの雑談がしたいのですがどこで出来ますか?
その他(プログラミング・Web制作)
-
9
IF文、条件分岐の整理方法
Visual Basic(VBA)
-
10
至急助けてください!!!あと2時間しかないです! ボタンを押したら0ランプが点灯し、コンマ5秒後に1
その他(プログラミング・Web制作)
-
11
HLMT、CSSについて相談です。 私は今までずっと自身のサイトで以下のような総称ファミリーを使って
その他(プログラミング・Web制作)
-
12
Web初心者です。 簡易的なWebページを作成し
その他(プログラミング・Web制作)
-
13
c++の勉強方法を教えてくださいプログラミングをやった事がなく1から勉強を始めようと思います1日1時
C言語・C++・C#
-
14
【ExcelVBA】5万行以上のデータ比較の効率的な処理方法について
Visual Basic(VBA)
-
15
EJSを仕事でなんとなくで使っているので、もっと体系的に学びたいのですが、おすすめの本やサイトを教え
HTML・CSS
-
16
スカラーのベクトル微分
その他(プログラミング・Web制作)
-
17
テーブルのセルデータを自動改行させずに、はみ出た部分は切り捨てたい
HTML・CSS
-
18
コードを書いて下さい( ; ; )写真有り
HTML・CSS
-
19
静止画画像をクリックすると音楽が鳴るスクリプトってありますか?
HTML・CSS
-
20
Q&A掲示板の入力フォームに文字数制限を設けて入力可能な文字数を表示したい
JavaScript
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・ハマっている「お菓子」を教えて!
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アンダーバーのname値は取得で...
-
ラジオボタンのリセット方法
-
ラジオボタンでの動的項目の変...
-
ラジオボタンにタブインデック...
-
Jvasvriptのlengthで個数が取得...
-
return trueとreturn falseの用...
-
slickのレスポンシブ > center...
-
hiddenのvalueの値を変えたい
-
onclickをEnterキーでも行いたい
-
onClick="this.form.submit
-
文字列型をDOM型に変換
-
チェックボックス付きのテーブ...
-
ASP.NETでNAME属性を固定にしたい
-
javascriptでセレクトボックス...
-
フォームが空欄の時にフォーム...
-
jQuery セレクトボックスで選択...
-
value内に変数を入れたい
-
onchangeイベントを強制的に発...
-
selectを変更不可にしたい
-
JavaScriptで電卓を作って一応...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ラジオボタンにタブインデック...
-
フォームPOST後「戻る」時のチ...
-
ラジオボタンのチェックが外れ...
-
データベースの値を判断してラ...
-
チェックされたラジオボタンに...
-
Jvasvriptのlengthで個数が取得...
-
JavaScript ラジオボタン デ...
-
radio選択をクッキーに保存させ...
-
VBA IE ラジオボタンに...
-
jQueryで複数のラジオボタンを処理
-
javascriptを使ってラジオボタ...
-
ラジオボタンで選択した項目の...
-
ラジオボタンを使った簡単なア...
-
アンダーバーのname値は取得で...
-
ラジオボタンでの動的項目の変...
-
EXCEL VBA:IEの操作であるラジ...
-
チェックボックスのON/OFFに連...
-
リセットボタンでクリアできな...
-
ラジオボタンでdisabledとchecked
-
ラジオボタンのチェック数に応...
おすすめ情報
CSSでのご提案をいただきありがとうございます。とても参考になります。
しかし、<ul>や<div>などでそれぞれ囲まれていたり、階層が親子関係になる場合にはCSSでは対応できないのです。
なので、javascriptでの実装を考えています。