サイトのヘッダーに非表示/表示ボタンを作成しましたが、この「問題」があります。ユーザーが初めてサイトを読み込んだ場合、または更新後に、このボタンを2回クリックして作業する必要があります。しかし、初めてです。その後、正常に動作します!なぜこれが起こっているのか考えていますか?
以下のコメントで実例。前もって感謝します!!!
サイトのヘッダーに非表示/表示ボタンを作成しましたが、この「問題」があります。ユーザーが初めてサイトを読み込んだ場合、または更新後に、このボタンを2回クリックして作業する必要があります。しかし、初めてです。その後、正常に動作します!なぜこれが起こっているのか考えていますか?
以下のコメントで実例。前もって感謝します!!!
jsコードは次のとおりです。
function display_news(){
var sheader_1 = document.getElementById("sheader_a");
var sheader_2 = document.getElementById("sheader_b");
if (sheader_1.style.display == 'block')
sheader_1.style.display = 'none',
sheader_2.style.display = 'block';
else sheader_1.style.display = 'block',
sheader_2.style.display = 'none';
;}
ページを初めてロードするときにsheader_1の値を警告すると、結果は空の文字列になるため、コードは何もしません(elseステートメントにジャンプします)。
それを機能させる1つの方法は次のとおりです。
function display_news(){
var sheader_1 = document.getElementById("sheader_a");
var sheader_2 = document.getElementById("sheader_b");
//here we also check if display property is empty
if (sheader_1.style.display == 'block' || sheader_1.style.display == '')
sheader_1.style.display = 'none',
sheader_2.style.display = 'block';
else sheader_1.style.display = 'block',
sheader_2.style.display = 'none';
;}
function display_header(){
var sheader_1 = document.getElementById("sheader_a");
var sheader_2 = document.getElementById("sheader_b");
if (sheader_1.style.display == 'block' || sheader_1.style.display=='')
{
sheader_1.style.display = 'none';
sheader_2.style.display = 'block';
}
else {
sheader_1.style.display = 'block';
sheader_2.style.display = 'none';
}
}
window.getComputedStyle(sheader_1).display
要素の計算されたスタイルを取得する必要があります。if (sheader_1.style.display == 'block')
それ以外の場合、表示が空になるため、この条件は機能しません。
Internet Explorerでは、計算されたスタイルの方法は次のとおりelement.currentStyle
です。
この場合、jQueryを使用することをお勧めします。
ページが読み込まれると、sheader_1の表示はブロックされませんが、空の文字列になります。
したがって、条件を次のように変更できます。
if (sheader_1.style.display != 'none')