1

2 つの条件ステートメントがあります。1 つは機能し、もう 1 つは機能しません。その理由を探るのに 3 日間を費やしました。うまくいけば、ここの誰かが問題に光を当てることができます.

作業ステートメント - これは、div を display:none と :block の間で切り替えるだけです

case 'addressSearch':
        var div = document.getElementById('addsearch');
           if (div.style.display !== 'block') {
                div.style.display = 'block';
            }
            else {
                div.style.display = 'none';
            }

これは壊れたものです - div の表示プロパティに応じて別のページに移動するはずです。リダイレクトしますが、display の値には依存しません。理由はわかりませんが、div.style.display は常に空の文字列です。

function loginCheck(){
var div = document.getElementById('loin');
    if (div.style.display !== 'block') {
        window.location = '/login.shtml';
        }
    else {
        window.location = '/calendar.shtml';
    }
};

css は #loin{display:block;} で、html は

    <div class="button" id="tmcb"  onclick="loginCheck()">To My Calendar</div>

編集: 新しい if ステートメント

        if (getComputedStyle(div, null).display !== 'block') { //something };

これは機能します

4

1 に答える 1

0

このプロパティは、HTML 要素に割り当てられた CSS クラスから計算されたスタイルではなく、HTML 属性にstyle割り当てられたものを返します。stylejQuery を使用する場合は、代わりに$('#loin').css('display').

jQuery を使用せず、IE9+ を対象とする場合は、window.getComputedStyle. IE8以下の解決策はわかりませんが、Googleがその解決策を手伝ってくれるはずです.

また、CSS クラスの代わりに単純に使用することもできstyle="display: block"、計算されたスタイルの煩わしさをすべて回避できます。

于 2013-11-06T03:08:59.883 に答える