Вывод значения из функции JS vanilla [дубликат]

175
24 февраля 2018, 23:21

На данный вопрос уже ответили:

  • Как вернуть значение из события или из функции обратного вызова? Или хотя бы дождаться их окончания 3 ответа

Повесил обработчик события на колесо мыши, не могу вернуть переменную delta со значением в основной код.

var elemToScroll = document.getElementById('container');
if (elemToScroll.addEventListener) {
  if ('onwheel' in document) {
    // IE9+, FF17+
    elemToScroll.addEventListener("wheel", onWheel);
  } else if ('onmousewheel' in document) {
    // устаревший вариант события
    elemToScroll.addEventListener("mousewheel", onWheel);
  } else {
    // Firefox < 17
    elemToScroll.addEventListener("MozMousePixelScroll", onWheel);
  }
} else { // IE8-
  elemToScroll.attachEvent("onmousewheel", onWheel);
}
function onWheel(e) {
  e = e || window.event;
  // deltaY, detail содержат пиксели
  // wheelDelta не дает возможность узнать количество пикселей
  // onwheel || MozMousePixelScroll || onmousewheel
  var delta = e.deltaY || e.detail || e.wheelDelta;
  var info = document.getElementById('delta');
  info.innerHTML = +info.innerHTML +  delta;
  console.log(delta);
  e.preventDefault ? e.preventDefault() : (e.returnValue = false);
}
Answer 1

хмм... у меня все работает.

var elemToScroll = document.getElementById('container'); 
 
if (elemToScroll.addEventListener) { 
  if ('onwheel' in document) { 
    // IE9+, FF17+ 
    elemToScroll.addEventListener("wheel", onWheel); 
  } else if ('onmousewheel' in document) { 
    // устаревший вариант события 
    elemToScroll.addEventListener("mousewheel", onWheel); 
  } else { 
    // Firefox < 17 
    elemToScroll.addEventListener("MozMousePixelScroll", onWheel); 
 } 
} else { // IE8- 
  elemToScroll.attachEvent("onmousewheel", onWheel); 
} 
 
 
 
function onWheel(e) { 
  e = e || window.event; 
 
  // deltaY, detail содержат пиксели 
  // wheelDelta не дает возможность узнать количество пикселей 
  // onwheel || MozMousePixelScroll || onmousewheel 
  var delta = e.deltaY || e.detail || e.wheelDelta; 
 
  var info = document.getElementById('delta'); 
 
  info.innerHTML = +info.innerHTML + delta; 
 
 
  console.log(delta); 
 
 
 
 
  e.preventDefault ? e.preventDefault() : (e.returnValue = false); 
}
#container{ 
width: 200px; 
height: 200px; 
background-color: lightgreen; 
}
<span>delta+= </span><h1 id="delta"> </h1> 
<div id="container"> </div>

Answer 2
var delta = 0;
function onWheel(e) {
  // ...
  delta = e.deltaY || e.detail || e.wheelDelta;
  // ...
}
READ ALSO
Зацикливается событие нажатии кнопки

Зацикливается событие нажатии кнопки

Есть страница, куда с помощью ajax запроса вставляются данныеВот кусочек кода:

175
Проблема с датой в JS

Проблема с датой в JS

ЗдравствуйтеПытаюсь сделать так чтобы, при отправке формы в БД записывалась дата отправки в формате "ДД

206
Сайдбар SublimeText3

Сайдбар SublimeText3

Здравствуйте, возник вопрос: При включении сайдбара в ST3 он сворачивается после перехода в другое окно или же просто при написании кода через...

108
Отправка сообщения в чат через textarea, jQuer/js

Отправка сообщения в чат через textarea, jQuer/js

Пишу расширение для ChromeНа таргетном сайте есть чат, в который нужно периодически отправлять сообщение

186