web-dev-qa-db-ja.com

document.bodyがnullエラーを修正する方法

次を使用しているため、JavaScriptでdocument.body isnullエラーが発生しています。

_$(window).width()
_

私の変数に割り当てる値として

_$(document).ready(function(){});
_

これを手伝ってくれた人にとても感謝しています。

敬具

編集:これがすべて不明だった場合は申し訳ありません。私は次の場所にデモを持っています: http://www.wpmonk.com/demo/hypowired 最初はテーマがロードされますが、その後(エラーのために)白になりますが、リロードすると$(window).width()の値を知っているので、テーマ全体

私はこのコードを使用してレイアウトを中央に配置しています(左側にも幅が必要なため、cssでは不可能です)。

_function positioneerElement(){      
    $breedte = (document.body.clientWidth - 1124) / 2;
    $('#bg_left').css({
        'width': $breedte
    });
    $('.container').css({
        'margin-left': $breedte
    });
}
_

Load関数でfunctionpositioneerElement()を呼び出します。

これが明確でない場合は申し訳ありませんが、これとコードのデモをここに置く必要はありませんでした。しかし、私は助けようとしている人々に感謝したいと思います!

11
user191766

私はoutisに同意します-もう少しコードが必要です。

それは言った:

  • $(document).ready関数内でall作業を行っていますか?
  • 正しく形成された(そして閉じられた)bodyタグと有効なxhtmlが間違いなくありますか?
  • これはすべてのブラウザで発生しますか?

1つの提案:

positioneerElement関数を$(document).ready関数にも入れても、問題は解決しませんか?ドキュメントをロードする前に、ブラウザがdocument.bodyを評価するかどうか疑問に思っています。

$(document).ready(function() {
    function positioneerElement(){      
    $breedte = (document.body.clientWidth - 1124) / 2;
    $('#bg_left').css({
        'width': $breedte
    });
    $('.container').css({
        'margin-left': $breedte
    });

    // your other code, including
    positioneerElement();
});
8
Damovisa

$(window).width()afterのみを呼び出すようにしてください(例:readyコールバックに)<body>タグを含めたか、標準モードのDoctype宣言を使用してください。あなたはとにかくそれをしているべきです:Quirksモードは最悪です。

問題は、Quirksモードでビューポートサイズを読み取るには、jQueryがdocument.body.clientWidthではなくdocument.documentElement.clientWidthを確認する必要があることです。 <body>をまだ開始していない場合は、document.bodyノードが存在しません。

6
bobince

Jquery.min.jsではなくjquery.jsを含める必要がありますバグのようですこれは私にとってはうまくいきます

2
mpeti

さて、あなたが私に与えた情報に基づいて、それは体がまだ適切にロードされていないということかもしれません。詳細については、こちらをご覧ください: http://www.coderanch.com/t/122834/HTML-JavaScript/document-body-null-or-not#606782

もっと言いたいのですが、私たちがデバッグするためにもう少しコードを投稿する必要があるということにも同意します。

1