Как заставить "onmouseup" функционировать, если пользователь перетаскивает курсор с div

Обратите внимание, как если вы onmousedown через div, он превращается из зеленого в красный. Это ожидается. Но если вы удерживаете мышь и перетаскиваете курсор в сторону от div, то отпустите мышь, onmouseup не будет работать, потому что курсор больше не зависает над div. Div остается красным, а не возвращается в исходное зеленое состояние.

Должен ли я использовать onmousemove?

Есть идеи как решить это?

function mouseDown() {
    document.getElementById("test").style.backgroundColor = "red";
}

function mouseUp() {
    document.getElementById("test").style.backgroundColor = "green";
}
#test {
position: absolute;
height: 50px;
width: 100px;
background-color: green;
}
<div id="test" onmousedown="mouseDown()" onmouseup="mouseUp()">
</div>

1 ответ

Решение

function mouseDown() {
    document.getElementById("test").style.backgroundColor = "red";
    document.getElementsByTagName("BODY").onmouseup = function() {mouseUp()};
}

function mouseUp() {
    document.getElementById("test").style.backgroundColor = "green";
}
#test {
position: absolute;
height: 50px;
width: 100px;
background-color: green;
}
<body>
<div id="test" onmousedown="mouseDown()" onmouseup="mouseUp()" 
onmouseout="mouseUp()">
</div>
</body>

ты должен использовать onmouseout() которые позволяют изменять содержимое, когда мышь покидает элемент.

вот ссылка для получения дополнительной информации

или вы должны использовать mouseup с родительским элементом в нашем случае элемент div с id=full Смотри сюда

function mouseDown() {
          document.getElementById("test").style.backgroundColor = "red";
      }

      function mouseUp() {
          document.getElementById("test").style.backgroundColor = "green";
      }
  #test {
    position: absolute;
    height: 50px;
    width: 100px;
    background-color: green;
    }
  #full{
      width: 100%;
      height: 2000px;
      background: blue;
    }
<body>
<div id="full" onmouseup="mouseUp()" >

    <div id="test" onmousedown="mouseDown()" onmouseup="mouseUp()">
  </div>
  
</div>
  

</body>

Другие вопросы по тегам