Может быть, немного неуклюже помещать обработчик на каждый элемент.Я хотел бы поместить обработчик в основной контейнер, а затем проверить оттуда ...
Может быть, сначала добавить немного кода, чтобы проверить, не работает ли мышь.
var main = document.getElementById('main')
var mouseDown = 0;
main.onmousedown = function() {
mouseDown=1;
}
main.onmouseup = function() {
mouseDown=0;
}
Затем мы можем проверить, находится или нет мышь над событием ...
main.addEventListener('mouseover', mousecheck)
main.addEventListener('mousedown', mousecheck)
Затем мы предотвращаем дефолт (остановка перетаскивания).
Если мышь не работает, а элемент, на который воздействует, - это прямоугольник, мы изменим его цвет.
function mousecheck( ev ) {
ev.preventDefault();
if( mouseDown && ev.target.className.startsWith( 'box') ) {
ev.target.style.backgroundColor = ev.target.style.backgroundColor == "red" ? 'white' : 'red';
}
}
Codepen