как исправить документ.значение body равно нулю-ошибка

StackOverflow https://stackoverflow.com/questions/1603810

  •  05-07-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

Это сказало:

  • Ты уверен, что делаешь ВСЕ ваша работа внутри $(документа).готовая функция?
  • У вас точно есть правильно сформированный (и закрытый) тег body и допустимый xhtml?
  • Происходит ли это во всех браузерах?

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

Сохраняется ли проблема, если вы устанавливаете positioneerElement функция в $(документе).тоже готовая функция?Мне интересно, оценивает ли браузер 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();
});

Другие советы

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top