2

Повесил обработчик события на колесо мыши, не могу вернуть переменную 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);
}
  • А где вы ее возвращаете? Где return? – smellyshovel Feb 23 '18 at 15:05
  • 1
    Где "основной код"? Подумайте - какой код вызывает вашу функцию onWheel , и интересует ли этот код, что там эта функция возвращает? –  Feb 23 '18 at 15:08
  • точно, спасибо! Сейчас проверю! – Denis Tsarkov Feb 23 '18 at 15:10
  • @DenisTsarkov очень интересно посмотреть. Рискну предположить, что не "не возвращает", а возвращает undefined, так? – smellyshovel Feb 23 '18 at 15:11
  • В начале я возвращал число в блок HTML, но потом возникла необходимость вернуть его просто в переменную, уже замыленные мозги, прошу помочь, если не вижу кусок бревна в глазу. – Denis Tsarkov Feb 23 '18 at 15:22
  • "замыленные мозги" - возьму на вооружение. Уберите var перед delta. –  Feb 23 '18 at 15:23

2 Answers2

2

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

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>
Halyna
  • 309
0
var delta = 0;
function onWheel(e) {
  // ...
  delta = e.deltaY || e.detail || e.wheelDelta;
  // ...
}