Как исправить document.body - ошибка null

У меня есть document.body - ошибка null в моем javascript, потому что я использую:

$(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
    });
}

Я вызываю функцию positioneerElement() в функции загрузки.

Извините, если это было непонятно, хотя здесь не было необходимости размещать демо для этого или кода. Однако я хотел бы поблагодарить людей, которые пытаются помочь!

Ответ 1

Я согласен с outis - нам нужен еще один код.

Это сказало:

  • Вы уверены, что выполняете всю свою работу внутри функции $(document).ready?
  • У вас определенно есть правильно сформированный (и закрытый) тег тела и действительный xhtml?
  • Это происходит во всех браузерах?

Одно предложение:

Сохраняется ли проблема, если вы поместите функцию 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();
});

Ответ 2

Убедитесь, что вы только вызываете $(window).width() после включения тега <body> (например, в готовом обратном вызове) и/или используете декларацию типа документа в стандартном режиме. Вы все равно должны это делать: режим Quirks Mode отстой.

Проблема заключается в том, что для чтения размера видового экрана в режиме Quirks jQuery должен выглядеть document.body.clientWidth вместо document.documentElement.clientWidth. Если вы еще не начали свой <body>, там нет document.body node.

Ответ 3

Ну, просто на основании информации, которую вы мне дали, может быть, что тело еще не загружено должным образом. Подробнее см. Здесь: http://www.coderanch.com/t/122834/HTML-JavaScript/document-body-null-or-not#606782

Я бы сказал больше, но я тоже согласен с outis, что вам нужно отправить еще несколько кода для отладки.

Ответ 4

Вы должны включить jquery.js, а не jquery.min.js Похоже, какая-то ошибка в нем Это работает для меня