getElementById TypeError: «невозможно установить для свойства 'innerHTML' значение null

Я новичок в изучении HTML, и я был самоучкой на этом пути. Это первый веб-сайт, который я когда-либо делал с нуля (с использованием HTML, CSS и JS). Я просмотрел на этом сайте другие вопросы и ответы по этому поводу, но столкнулся с проблемой, которую другие ответы не решают. Многие ответы предполагают, что «window.onload = function() {JavaScript}» решит проблему, но у меня есть более одной возможной функции на данной странице. Я использую innerHTML для загрузки содержимого тела, в то время как фон и навигация соответствуют веб-странице.

У меня есть четыре кнопки с четырьмя разными функциями: «Домашняя страница, О нас, Видео, Исследования и разработки»; с соответствующими функциями: «load_home(), load_about(), load_media() и load_research()».

У меня так выглядит:

<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="Script\jquery-ui-1.11.2.custom\jquery-ui.theme.css">
<link language="JavaScript"type="text/css" rel="stylesheet" href="Script\jquery-ui-1.11.2.custom\jquery-ui.css"></link>
<script language="JavaScript" type="text/javascript" src="Script\jquery-ui-1.11.2.custom\external\jquery\jquery.js"></script>
<script language="JavaScript" type="text/javascript" src="Script\jquery-ui-1.11.2.custom\jquery-ui.js"></script>
<script language="JavaScript" type="text/javascript">
    $(function() {
        $( "input[type=submit], a, button" )
        .button()
        .click(function( event ) {
            event.preventDefault();
        });
    });
</script>
</head>
<body>
<div class="start"> <!--start refers to the CSS scope I added to the jQuery UI I have added for the buttons in my navigation-->
<nav>
<button onclick="load_home()" class="">Home Page</button>
<button onclick="load_about()" class="">About </button>
<button onclick="load_media()" class="">Videos</button>
<button onclick="load_research()" class="">Research and Development</button>
</nav>
</div>
</body>
<script type="text/javascript"> 
    function load_home() {
        document.getElementById("content1").innerHTML='<object type="text/html" data="Home.html"></object>';
            } 
    function load_about() {
        document.getElementById("Body").innerHTML='<object type="text/html" data="About Golding Lights.html"></object>';
            } 
    function load_media() {
        document.getElementById("Body").innerHTML='<object type="text/html" data="Media.html"></object>';
            } 
    function load_research() {
        document.getElementById("Body").innerHTML='<object type="text/html" data="Research and Development.html"></object>';
            } 
</script>
</html>

Я использовал эту функцию раньше на другом веб-сайте, который собирался разработать, и она работала просто отлично. Надеюсь, есть ответы, которые могут мне помочь. Спасибо.


person ryan_webdev    schedule 16.01.2015    source источник
comment
Вы можете разместить все свои JS-функции внутри окна. редактировать их.   -  person ateich    schedule 17.01.2015
comment
Я не вижу ни одного атрибута ID в вашем HTML - наверное, это он :)   -  person tymeJV    schedule 17.01.2015
comment
не заключайте свой html в теги pre. Мы не можем видеть ваш код, когда он так упакован. Используйте кнопку {} для переноса кода.   -  person scrappedcola    schedule 17.01.2015
comment
Я на самом деле исправил это сам. Мне нужен был › в моем объекте, и я не включил div, куда должен был быть направлен контент. Я такой тупой.   -  person ryan_webdev    schedule 17.01.2015


Ответы (1)


Как было сказано, у вас нет (многих) идентификаторов в вашем HTML.

Body - это не идентификатор, это имя тега. Поскольку в вашем документе должен быть только один элемент body, к нему можно получить доступ с помощью document.getElementsByTagName('body')[0] (функция возвращает набор/массив объектов, а [0] возвращает первый элемент)

Вы также можете добавить идентификатор к элементу <body id="myBody">, который позволит вам использовать document.getElementById('myBody')

person NickSlash    schedule 16.01.2015
comment
Или вы можете просто добавить id="Body" к тегу <body>; нет ничего плохого в использовании такого идентификатора, как Body. Или вы можете использовать свойство document.body. Но основной момент в том, что аргумент getElementById() должен быть определенным значением id. - person Jukka K. Korpela; 17.01.2015