2016-12-27 31 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); 
      });  
相關問題