@programmerscript

Непонятная ошибка "Cannot read «innerHTML of null» в JS, как исправить?

Добрый день, уважаемые участники сообщества. Когда я программировал на Java, я столкнулся с этой проблемой. Я добавлял HTML файл с кодом в ActivityMain.xml и получилось, что там не работают alertы, confirmы и promptы. Тогда я решил сделать эти функции сам, а-ля
function alert(message){...}. У меня получилось создать свои всплывающие окна, при этом все работало при стандартном вызове функции. Но когда я вставил это в свой код игры-раскраски, то хром начал ругаться
Uncaught TypeError: Cannot set property 'innerHTML' of null
.
Вот что у меня получилось:

var confirmR = undefined; //переменная результата конфирма
var answerR = undefined; //переменная результата промпта
localStorage.visit; //объявление кэша
//эта функция проверяет значение переменной кэша, и если оно 1, то открыть страницу как обычно, если 0 - спрашивать про Добро пожаловать в игру, пока не нажмут ОК, иначе вызвать функцию заново.
function hello(){
				if(localStorage.visit){
				}
				else{
							ask();
				}
}
function ask(){
				confirm("Good day! Welcome to the Game!");
				if(confirmR){
								localStorage.visit = true;
								}
							else{
						ask();
						}
}
hello();
//функция закрытия всплывающего окна.
//она ищет див с окном и убирает css класс .show, а еще удаляет из него данные
    function hide(){
                    document.getElementById("box").innerHTML = "";
document.getElementById("box").classList.remove("show");
                    }
function alert(message){ 
    document.getElementById("box").innerHTML = message + "<br> <a onclick='hide();'> Ok</a>";
    document.getElementById("box").classList.add("show");
    }
function confirm(message){
    				document.getElementById("box").innerHTML = message + "<br> <a onclick='cancel();' >Cancel</a> <a onclick='ok();' >Ok</a>";
    				document.getElementById("box").classList.add("show");
    				}
//если нажали ок в конфирме
function ok(){
				confirmR = true;
				hide();
				}
function cancel(){
				confirmR = false;
				hide();
				}
function prompt(message){
				document.getElementById("box").innerHTML = message + "<br> <input type='text' id='answer'/> <a onclick='answer();' > Submit</a>";
				document.getElementById("box").classList.add("show");
				}
//сохраняет в результат введенный текст
function answer(){
				answerR = document.getElementById("answer").value;
				hide();
				}

В чём проблема?
  • Вопрос задан
  • 111 просмотров
Пригласить эксперта
Ответы на вопрос 1
like-a-boss
@like-a-boss
признайся, тебя тянет на код мужика
Проблема в том, что вы не находите нужного элемента и функция, к примеру, getElementById возвращает null, а у null нет и не может быть ни свойств, ни методов.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы