0

ページ (html、本文) に垂直スクロールバーがある場合にのみ、#myWork の ID を持つ要素を非表示にしようとしています。垂直スクロールバーの存在の検出に関する別の質問/回答を読んだ後、次のコードがあります。

var hasVScroll = document.body.scrollHeight > document.body.clientHeight;
        var cStyle = document.body.currentStyle||window.getComputedStyle(document.body, "");
        hasVScroll = cStyle.overflow == "visible" || cStyle.overflowY == "visible" || (hasVScroll && cStyle.overflow == "auto") || (hasVScroll && cStyle.overflowY == "auto");
        if(hasVScroll){
            document.getElementById('myWork').style.display = 'none';
        }

これは機能しますが、この HTML ページに垂直スクロール バーがない場合、id が myWork の要素も非表示になります。

これを正しく行うためのすべての助けに心から感謝します。

PS私はすでにjQueryを使用しているので、ifステートメント内でjQueryでそれを隠そうとしましたが、それもうまくいきませんでした。

4

1 に答える 1

1

すでにjQueryを使用している場合、これは機能するはずです:

function init(e){
    var hasVScroll = $(document).height( ) > $(window).height( );

    if(hasVScroll){
        $('#myWork').hide( );
    }

}

$(document).ready(init);

わかりました、それで機能しない理由はこれです

var cStyle = document.body.currentStyle||window.getComputedStyle(document.body, "");
hasVScroll = cStyle.overflow == "visible" || cStyle.overflowY == "visible" || (hasVScroll && cStyle.overflow == "auto") || (hasVScroll && cStyle.overflowY == "auto");

hasVScroll を常に true に設定しています。

お役に立てれば。

于 2012-11-08T06:56:17.653 に答える