Простое скрытие изображения — Uncaught TypeError: невозможно установить свойство «отображение» неопределенного

Это кажется действительно глупым, но я прочитал десятки подобных сообщений на форуме и просто не могу понять, что я делаю неправильно.

Я разрабатываю веб-сайт с кнопкой меню, значок которой меняется на «X», когда он открыт. Он переключается при каждом нажатии. Функция javascript запускается, но возвращает «Uncaught TypeError: невозможно установить свойство« отображение »неопределенного», когда она достигает строки, изменяющей стиль кнопки меню. дисплей на «нет».

Любые идеи будут высоко оценены.

HTML:

<img id="menuIconImage" class="menuIcon" src="resources/menu.png" onclick="menuToggle()">
<img id="menuIconImageClose" class="menuIcon" src="resources/close.png" onclick="menuToggle()">

CSS:

.menuIcon {

    position: fixed;
    left: 33px;
    top: 178px;
    width: 35px;
    height: 35px;
    cursor: pointer;
}

#menuIconImageClose {

    //the "close" image/button is hidden by default.
    display: none;
}

Javascript:

var menuState = 0;

function menuToggle() {
    "use strict";

    if (menuState === 0) {

        document.getElementById("menuIconImage").stlye.display = "none";
        document.getElementById("menuIconImageClose").style.display = "block";
        menuState = 1;

    } else if (menuState === 1) {

        document.getElementById("menuIconImageClose").style.display = "none";
        document.getElementById("menuIconImage").style.display = "block";
        menuState = 0;      
    }
}   

person Drake Withers    schedule 22.09.2017    source источник
comment
где определяется menuState?   -  person Kevin Kloet    schedule 22.09.2017
comment
Он определен в верхней части скрипта. Я только что добавил определение для вашего обзора.   -  person Drake Withers    schedule 22.09.2017
comment
вы только что удалили 2 строки кода в каждом из операторов if, убедитесь, что они не дают ошибки, поскольку я не вижу элементов, на которые они ссылаются в вашем коде.   -  person Kevin Kloet    schedule 22.09.2017
comment
Вы неправильно написали "стиль". document.getElementById("menuIconImage").stlye.display = "none" должно быть document.getElementById("menuIconImage").style.display = "none"   -  person mrogers    schedule 22.09.2017
comment
хороший глаз, Кевин. эти строки кода работают нормально; это следующая строка, которая возвращает ошибку:   -  person Drake Withers    schedule 22.09.2017
comment
У @mrogers хорошее зрение, он заметил слово с ошибкой   -  person Kevin Kloet    schedule 22.09.2017
comment
@mrogers, это решение. Не могу поверить, что я этого не видел; спасибо! Как я могу отметить ваш комментарий как правильный ответ?   -  person Drake Withers    schedule 22.09.2017
comment
@DrakeWithers Я опубликую это как ответ.   -  person mrogers    schedule 22.09.2017


Ответы (1)


В этой строке есть слово 'stlye' с ошибкой, которое должно быть 'style':

document.getElementById("menuIconImage").stlye.display = "none";

должно быть

document.getElementById("menuIconImage").style.display = "none";

Мой анализ для определения проблемы начался с текста ошибки, который указывал, что проблема не в поиске элемента (т.е. часть document.getElementById("menuIconImage") работала). Если бы элемент не был найден, мы бы получили ошибку с текстом Uncaught TypeError: Cannot read property 'style' of null. Это сузило область, в которой была проблема.

person mrogers    schedule 22.09.2017
comment
Я ценю дополнительное объяснение. - person Drake Withers; 22.09.2017