document.onmouseup = null

170
21 сентября 2017, 17:45
thumb.onmousedown = function(e) {
  ...
    document.onmouseup = function() {
        document.onmousemove = document.onmouseup = null;
      };
  ...
}

примерно так выглядит обработчик для Drag'n'Drop'а. Он работает. Но мне не ясно то как работает присваивание "document.onmouseup = null", в функции обработчике на этом самом document.onmouseup ... По идее это должна быть одноразовая функция - присвоили null, он должен перечеркнуть саму эту функцию. Но так не происходит. Функция продолжает работать. Почему?

Answer 1

thumb.onmousedown, document.onmouseup события вешаются на разные елементы, примерная логика такова :

зажали лкм на елементе, добавили документу ивентхэндлер для отслеживания координат document.onmousemove, ну чтобы знать куда мы передвигаем текущий елемент.

отпустили лкм - значит процесс Drag'n'Drop'а завершен, елемент оказывается на том месте, где отпустили лкм, а ивентхэндлеры на документе уже не нужны, поетому их удаляем (document.onmousemove = document.onmouseup = null;).

При зажатии лкм уже на следующем елементе просто повторяем вышеописаные действия.

READ ALSO
Конвертировать дату в другой формат

Конвертировать дату в другой формат

Как конвертировать дату в формате YYYY-MM-DD[T]HH:mm:ssSSS[Z] (например 2017-09-21T21:00:00

189
Как повесить обработчик change для метода класса

Как повесить обработчик change для метода класса

Добрый вечер, столкнулся с проблемой привязки обработчика change/click для метода sumMethod класса Create в ECMAScript 6Примерный псевдокод проблемы:

161
Создание правильного цикла в событии

Создание правильного цикла в событии

Использую в проекте плагин air-datepickerВ нем есть собственные описанные события

113
Помогите с php7 и GET запросом

Помогите с php7 и GET запросом

Всем привет, руки дошли до 7пхп и тут началосьПроблема с ГЕТ запросом , не хочет работать

250