JavaScriptによる 'div'の表示/非表示
私が作成しているウェブサイトでは、1つのdivを読み込み、もう1つを隠し、JavaScriptを使ってdiv間の表示を切り替える2つのボタンを用意したいと考えています。
これは私の現在のコードです。
function replaceContentInContainer(target, source) {
document.getElementById(target).innerHTML = document.getElementById(source).innerHTML;
}
function replaceContentInOtherContainer(replace_target, source) {
document.getElementById(replace_target).innerHTML = document.getElementById(source).innerHTML;
}
<html>
<button onClick="replaceContentInContainer('target', 'replace_target')">View Portfolio</button>
<button onClick="replaceContentInOtherContainer('replace_target', 'target')">View Results</button>
<div>
<span id="target">div1</span>
</div>
<div style="display:none">
<span id="replace_target">div2</span>
</div>
div2を置換する2つ目の関数は動作しませんが、1つ目の関数は動作します。
170
3
How to show or hide an element:
要素の表示・非表示を切り替えるには、その要素の[styleプロパティ][1]を操作します。ほとんどの場合、要素のdisplay`プロパティを変更するだけでよいでしょう。
また、要素がスペースを占めるようにしたい場合(テーブルのセルを隠す場合など)は、代わりに要素のvisibility`プロパティを変更することができます。
要素の集合体を非表示にする。
要素の集合体を隠したい場合は、各要素を反復して、その要素の〜の
display
をnone
に変更するだけです。要素の集まりを表示します。
ほとんどの場合、
display: none
とdisplay: block
を切り替えるだけでしょうから、要素の集合体を表示する場合は、以下のようにすれば*十分かもしれません。デフォルトで
block
にしたくない場合は、オプションで2番目の引数に希望のdisplay
を指定することができます。あるいは、要素を表示するためのより良い方法は、単にインラインの
display
スタイルを削除して、初期状態に戻すことです。そして、要素の計算されたdisplay
スタイルをチェックして、カスケードされたルールによって隠されているかどうかを判断します。もしそうなら、その要素を表示します。(さらに一歩進めたい場合は、jQueryが行うことを真似て、要素を(競合するスタイルシートのない)空白の
iframe
に追加することで、要素'のデフォルトのブラウザのスタイリングを決定し、計算されたスタイリングを取得することもできます。そうすることで、要素の真の初期display
プロパティ値を知ることができ、望ましい結果を得るために値をハードコーディングする必要がなくなります)。表示の切り替えを行います。
同様に、要素や要素の集合体の
表示
を切り替えたい場合は、単純に各要素を反復して、display
プロパティの計算値をチェックすることで、その要素が表示されているかどうかを判断することができます。表示されている場合はdisplay
をnone
に設定し、そうでない場合はインラインのdisplay
スタイリングを削除し、まだ隠れている場合はdisplay
を指定された値またはハードコードされたデフォルトのblock
に設定します。[1]: https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/style
問題のdivのスタイルを操作すればいいのですが...。
スタイルを使う
HTMLの
onclick=""
属性よりも、JavaScriptでイベントハンドラを使用する方が良いでしょう。JavaScriptです。
jQueryを使うと、DOM要素を簡単に操作できるようになるかもしれません。