※ ChatGPTを利用し、要約された質問です(原文:クリックで特定のdiv要素が表示されるJavascriptに追加機能を)
クリックで特定のdiv要素が表示されるJavascriptに追加機能を持たせたい
このQ&Aのポイント
クリックで特定のdiv要素が表示されるJavascriptに追加機能を持たせたい場合、idを指定せずに複数のdiv要素を対象にする方法があります。
具体的には、showHide関数の引数を変えることで、異なるdiv要素を操作できます。
また、それに応じてリンク要素のidやdiv要素のidも変更する必要があります。
クリックで特定のdiv要素が表示されるJavascriptに追加機能を
クリックで特定のdiv要素が表示されるJavascriptに追加機能を持たせたい
よろしくお願い致します。
下記のようなコードで、HTML部分の「リンクテキスト」をクリックすると「クリックで開く内容」が表示され、かつ、リンクテキスト(id="link-1")の文字色が変わるJavascriptを使用しています。
■Javascript部分
function showHide(targetID) {
if( document.getElementById(targetID)) {
if( document.getElementById(targetID).style.display == "none") {
document.getElementById(targetID).style.display = "block";
document.getElementById('link-1').style.color = "#cc0000";
}
else {
document.getElementById(targetID).style.display = "none";
document.getElementById('link-1').style.color = "#000000";
}
}
}
■HTML部分
<a href="#" id="link-1" onClick="showHide('hoge1');return false;">リンクテキスト</a>
<div id="hoge1" style="display:none;">クリックで開く内容</div>
リンクテキストの文字色が変わる部分は見よう見まねで追加したのですが、文字色が変わる部分を、link-2、link-3・・というように同ページに複数配置したい場合、どのようなコードに変更すればよいのでしょうか。
できればid="link-1"などという記述はせずに、showHide('hoge1');をshowHide('hoge2');に変えて、<div id="hoge1" style="display:none;">を<div id="hogge2" style="display:none;">に変えるだけで、文字色も変わるようにできれば一番良いのですが、そのような方法はあるのでしょうか?
分かりにくい箇所は補足説明致しますので、どうぞご教授下さいますようお願い致します。
お礼
丁寧にお教え頂きありがとうございました。 div[id^="section"]:not(:target) { display: none; } で表示・非表示を実現できるというのには驚きました。<a href="#">が好ましくないというのも大変勉強になりました。 お教え頂いたコードも参考にさせて頂きます。 本当にありがとうございました。