2016-12-27 4 views
0

Я пытаюсь изменить свою gaTop вар в моей functiontest, но я не понимаю, почему он не работаетизменить значение переменной в функции обработчика событий

var gaTop = 0; 

functionTest = function(callback) 
{ 
    $('html').on("mousewheel DOMMouseScroll", function(e) 
    { 
     var delta = (e.originalEvent.wheelDelta || -e.originalEvent.detail); 

     if (delta < 0) 
     { 
      var gaTop = -100; 
     } 
     else if (delta > 0) 
     { 
      var gaTop = +100; 
     } 

     console.log(gaTop); 

     callback(gaTop); 
    }); 
} 

functionTest(function(e) 
{ 
    console.log(gaTop); 
}); 
+2

ваше объявление и инициализация gaTop в каждом блоке, и вы не используете ga. – Rajashekhar

+0

Вам нужно сделать gaTop как глобальную переменную или объявить ее в такой области, где обе функции могут получить к ней доступ. – Kenny

+0

Наконец-то я нашел решение: – user7346183

ответ

1

Для справки: Declaring vs Initializing a variable?

var ga = 0; 
var gaTop = null; 
functionTest = function(callback) { 
$('html').on("mousewheel DOMMouseScroll", function(e) { 
    var delta = (e.originalEvent.wheelDelta || -e.originalEvent.detail); 
    if (delta < 0) { 
    gaTop = -100; 
    } 
    else if (delta > 0) { 
    gaTop = 100; 
    } 
    console.log(gaTop); 
    callback(gaTop); 

}); 
} 
functionTest(function(e) { 
console.log(gaTop); 
}); 
+0

Мне жаль, что я сделал ошибку, мой var ga должен быть gaTop. Но console.log (gaTop) всегда возвращает 0 – user7346183

0

Инициализируйте переменную сверху, прежде чем назначать значение. в противном случае он не будет установлен, вы создаете новую переменную и устанавливаете значение как в том, так и в другом, что является причиной проблемы.

var gaTop = null; 
if (delta < 0) { 
    gaTop = -100; 
    } 
    else if (delta > 0) { 
    gaTop = +100; 
    } 
+0

. Извините, я сделал ошибку, мой var ga должен быть gaTop. Но console.log (gaTop) всегда возвращает 0 – user7346183

+0

debug и проверяет значение delta на событии mousewheel –

0

его окончательно работает, спасибо за помощь!

var gaTop = 0; 

      functionTest = function(callback) { 
      $('html').on("mousewheel DOMMouseScroll", function(e) { 
       var delta = (e.originalEvent.wheelDelta || -e.originalEvent.detail); 
       if (delta < 0) { 
       gaTop = gaTop -100; 
       } 
       else if (delta > 0) { 
       gaTop = gaTop +100; 
       } 
       callback(gaTop); 

      }); 
      } 
      functionTest(function(e) { 
      console.log(gaTop); 
      });  
Смежные вопросы