Я пытаюсь сделать лабиринт мышиного лабиринта, используя Html, Css и Javascript. где вы проиграете, если коснетесь любой из стен курсором мыши. Тем не менее, я хочу сделать цвет фона лабиринта красным, когда вы касаетесь одной из стен в лабиринте (игра окончена).
var boundaries = document.querySelectorAll(".boundary");
var start = document.querySelector("#start");
var end = document.querySelector("#end");
var status = document.querySelector("#status");
var win = true;
start.addEventListener("mouseover", function() {
document.getElementById("status").innerHTML = "Move the mouse cursor over to "E" to win";
for (var i = 0; i < boundaries.length; i++) {
boundaries[i].addEventListener("mouseover", function() {
win = false;
this.style.background = "red";
alert("You lost, try again!");
this.style.background = "#eeeeee";
document.getElementById("status").innerHTML = "You lost!";
});
}
});
end.addEventListener("mouseover", function() {
if (win == true) {
document.getElementById("status").innerHTML = "You won!";
alert("Gongratulations! You won!");
}
win = true;
});
в html я использую класс, чтобы сделать стены
<div id = "maze">
<div id = "start">S</div>
<div class = "boundary" id = "boundary1"></div>
<div class = "boundary"></div>
<div class = "boundary"></div>
<div class = "boundary"></div>
<div class = "boundary"></div>
Там также нет элемента id = "status", но я думаю, что мы пропустили часть HTML. Кроме них работает нормально..



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Если стены лабиринта заданы элементами div с классом boundary, я думаю, вам просто нужно добавить прослушиватель событий ко всем этим элементам div. Что-то вроде этой скрипки:
var boundaries = document.querySelectorAll(".boundary");
var start = document.querySelector("#start");
var end = document.querySelector("#end");
var status = document.querySelector("#status");
var win = true;
start.addEventListener("mouseover", function() {
document.getElementById("status").innerHTML = "Move the mouse cursor over to 'E' to win";
for (var i = 0; i < boundaries.length; i++) {
boundaries[i].addEventListener("mouseover", function() {
win = false;
this.style.background = "red";
alert("You lost, try again!");
this.style.background = "#eeeeee";
document.getElementById("status").innerHTML = "You lost!";
});
}
});
const walls = document.querySelectorAll(".boundary");
walls.forEach(wallDOM => {
wallDOM.addEventListener("mouseover", function() {
document.getElementById("maze").style.background = "red";
});
});
document.getElementById("resetButton").addEventListener("click", function() {
document.getElementById("maze").style.background = "black";
});#maze {
width: 300px;
height: 300px;
position: relative;
background: black;
}
#boundary1 {
width: 50px;
height: 5px;
background: green;
position: absolute;
top: 0;
}
#boundary2 {
width: 5px;
height: 250px;
background: green;
position: absolute;
top: 50px;
}
#boundary3 {
width: 125px;
height: 5px;
background: green;
position: absolute;
top: 25px;
left: 45px;
}
#boundary4 {
width: 70px;
height: 5px;
background: green;
position: absolute;
top: 220px;
right: 0;
}
#boundary5 {
width: 5px;
height: 80px;
background: green;
position: absolute;
top: 75px;
left: 120px;
} <div id = "maze">
<div id = "start">S</div>
<div class = "boundary" id = "boundary1"></div>
<div class = "boundary" id = "boundary2"></div>
<div class = "boundary" id = "boundary3"></div>
<div class = "boundary" id = "boundary4"></div>
<div class = "boundary" id = "boundary5"></div>
</div>
<button id = "resetButton">Reset BG</button>На самом деле, посмотрите еще раз на вопрос, ваш код добавляет что-то, что уже сделано в исходном коде. Просто ОП устанавливает слушателей «стен» только при наведении курсора start. Смотрите: boundaries[i].addEventListener
Вы действительно правы, мой плохой. Я честно потерял эту часть его кода
Я вижу два дефекта 1)
"Move the mouse cursor over to "E" to win";Либо нужно убрать кавычки вокругE, либо поставить в одинарную кавычку 2. Нет элемента сid'end