Невозможно установить свойство InnerHTML null
У меня простая html-страница без кода в теге body.
Я хочу вставить html в тег body через javascript.
Мой файл javascript выглядит следующим образом.
var Global={
UserWall:function(){
return "a very long html code";
}
};
var globalObject=Object.create(Global);
document.getElementsByTagName("body").item(0).innerHTML=globalObject.UserWall();
Теперь я хочу, чтобы этот очень длинный html-код был автоматически вставлен в тег body при загрузке страницы.
Но это дает мне ошибку, о которой я упоминал в заголовке. Почему?
а также это правильный способ создания веб-сайта на основе ajax (без перезагрузки страницы), что означает, что если я позвонил стороне сервера script, чтобы обновить этот очень длинный html-код и добавил его в тело страницы.
Ответы
Ответ 1
Вы почти наверняка используете свой код перед построением DOM. Попробуйте запустить код в функции window.onload
(но см. Примечание ниже):
window.onload = function() {
// all of your code goes in here
// it runs after the DOM is built
}
Еще одно популярное кросс-браузерное решение - разместить ваш блок <script>
непосредственно перед закрывающим тегом </body>
. Это может быть лучшим решением для вас, в зависимости от ваших потребностей:
<html>
<body>
<!-- all of your HTML goes here... -->
<script>
// code in this final script element can use all of the DOM
</script>
</body>
</html>
- Обратите внимание, что
window.onload
будет ждать загрузки всех изображений и подкадров, что может занять много времени после создания DOM. Вы также можете использовать document.addEventListener("DOMContentLoaded", function(){...})
, чтобы избежать этой проблемы, но это не поддерживается кросс-браузером. Тонкий снимок - это кросс-браузер и запускается, как только DOM завершается.
Ответ 2
Я сделал все упомянутые решения. но они не работали, пока я не сделал это с помощью JQuery:
на моей странице HTML:
> <div id="labelid" > </div>
и когда я нажимаю кнопку, я помещаю это в свой JS файл:
$("#labelid").html("<label>Salam Alaykom</label>");
Ответ 3
Выполняется ли это в <head>
html? Если это так, вы должны убедиться, что тег <body>
загружен первым.
Вам нужно использовать обработчик onload, например: http://javascript.about.com/library/blonload.htm
Ответ 4
возможно, это сработает:
document.getElementsByTagName("body")[0].innerHTML