Я не знаю, как объяснить, поэтому начну с демонстрации своего кода. Так у меня что-то вроде этого:
//array of all div's positions
var zone = [];
//add a div's position in the array
function myFunction1(){
var pos = getPos(div);
zone[zone.length] = pos;
}
//when the mouse isn't in the zone of a div, delete all zones
function myEventFunction(e){
var posMouse = xx; //define the pos of the mouse
for(i=0: i<zone.length; i++){
if (posMouse !== zone[i]){
zone = [];
}
}
}
Конечно, это просто упрощенная версия моего кода.
функции работают, но есть проблема "тайминга". когда моя мышь покидает зону, она немедленно входит в другой div, который запускает "myFunction1". функция «myEventFunction» не успевает удалить все данные в зоне [], потому что в зоне [] есть новые данные, поэтому «if (posMouse! == zone [i])» является ложным, а не истинным.
Я думаю, мне нужно использовать закрытие, но я не знаю, как это сделать. Я не уверен, что мой вопрос достаточно понятен, но может ли кто-нибудь мне помочь?



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


Я думаю, вы можете захотеть изучить событие onmouseleave вместо onmousemove, которое срабатывает только один раз, когда вы переходите между div.
Проблема в том, что я добавляю более одного div в зону. поэтому я могу покинуть div, но не покинуть зону. "myFunction1" запускается при наведении мыши на div. и этот div имеет 2-8 других div, которые должны добавить позицию в зоне []. Когда я покидаю один из всех этих div, он должен удалить их из зоны []. Понимать? мой английский немного плохой ...