2009-10-21 2 views
11

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

$(window).width() 

, как значение, присваиваемое переменной в моей

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

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

Сердечные приветы

изменения: извините, если это все было неясно. У меня есть демо: http://www.wpmonk.com/demo/hypowired сначала тема загружается, но затем становится белой (из-за ошибки), но когда вы перезагружаете, вы можете увидеть целую тему, потому что тогда он знает значение для $ (window) .width()

Я использую этот код для центрирования макета (не возможно с CSS, потому что левые должно иметь ширину Aswell.)

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

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

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

+0

Пожалуйста, пост минимального тестового примера: достаточно коды, чтобы быть полными и производить ошибка, но не более. – outis

+0

Почему вы не участвуете в голосовании таких вопросов? Наведите указатель мыши на стрелку вниз, прочитайте всплывающую подсказку и выполните свою проклятую работу. –

+3

@ Джош: Наверное, немного суровый, я думаю. Я подумал, что мы можем сначала запросить дополнительную информацию? Айртон, вероятно, честно считал, что больше информации не требуется; надеюсь, он обновит вопрос. Но путем downvoting, менее вероятно, что люди будут пытаться помочь и менее вероятно, что он получит ответ. Я думал, что сообщество SO здесь было для того, чтобы помогать людям, а не ругать и наказывать их за неточную связь ... – Damovisa

ответ

9

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

Это говорит:

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

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

ли проблема сохраняется, если поместить функцию positioneerElement в $ (документ) .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(); 
}); 
+0

Я добавил дополнительную информацию, Я делаю все это в готовых функциях Да, мой код должен быть действительным xhtml, и это происходит в каждом браузере – Ayrton

+0

@Ayrton - Я добавил предложение и пример кода – Damovisa

+0

Большое спасибо. Яростно все это имело отношение к этому. Мне было странно, потому что в других проектах мне не нужно было вводить функции в свой документ. Cheers – Ayrton

2

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

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

7

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

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

+0

Это настоящая Cure ... – ErickBest

1

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

+0

Это сработало для меня тоже один раз. – Moons