1

我有两个条件语句,一个有效,一个无效。我花了3天时间试图找出原因。希望这里有人可以对这个问题有所了解。

工作声明 - 这个只是在 display:none 和 :block 之间切换一个 div

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

style属性返回分配给styleHTML 属性的内容,而不是来自分配给 HTML 元素的 CSS 类的计算样式。如果你使用 jQuery,你可以改用$('#loin').css('display').

如果你不想使用 jQuery 并且你的目标是 IE9+,你可以使用window.getComputedStyle. 我不知道 IE8 及以下的解决方案,但谷歌应该帮助你解决这个问题。

您也可以简单地使用style="display: block"而不是 CSS 类,并避免所有这些计算样式的麻烦。

于 2013-11-06T03:08:59.883 回答