как исправить document.body это null-error - PullRequest
11 голосов
/ 22 октября 2009

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

$(window).width()

как значение для присвоения переменной в моем

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

Я был бы очень признателен всем, кто мог бы помочь мне с этим.

С уважением

edit: извините, если все это было неясно. У меня есть демо на: 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() в функции загрузки.

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

Ответы [ 4 ]

8 голосов
/ 22 октября 2009

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

Это говорит:

  • Вы уверены, что все выполняете свою работу внутри функции $ (document) .ready?
  • У вас точно есть правильно сформированный (и закрытый) тег body и правильный 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();
});
6 голосов
/ 22 октября 2009

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

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

2 голосов
/ 20 ноября 2009

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

1 голос
/ 22 октября 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...