2016-12-27 34 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

我很抱歉我犯了一个错误,我的变种ga应该是gaTop。但是console.log(gaTop)总是返回0 – user7346183

0

在分配值之前在顶部初始化变量。否则它将不会设置,您正在创建新变量并在导致问题的if和else部分中设置值。

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

对不起,我犯了一个错误,我的var ga应该是gaTop。但是console.log(gaTop)总是返回0 – user7346183

+0

调试并验证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); 
      });  
相关问题