Как исправить 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
Похоже, какая-то ошибка в нем
Это работает для меня