2014-10-28 200 views
-4

我知道這可能聽起來像一個重複的問題,但我已經嘗試過一個形式堆棧溢出的事情,它不起作用。我試圖做的事情包括noUiSlider,我試圖基本上獲得每個滑塊的3個值,然後以任何我希望的方式使用這些值 - 例如,如果滑塊的總值累加,打開或關閉下一個按鈕到一個給定的值。如何訪問函數內的變量?

這裏是有問題的代碼:

// On document ready, initialize noUiSlider. 
     $(function(){ 



     $('.guardsRanger').noUiSlider({ 
      start: [0], 
      step: 1, 
      behaviour: 'tap-drag', 
      range: { 
      'min': 0, 
      'max': 8 
      } 
     }, true); 

     $('.jacksRanger').noUiSlider({ 
      start: [0], 
      step: 1, 
      behaviour: 'tap-drag', 
      range: { 
      'min': 0, 
      'max': 8 
      } 
     }, true); 

     $('.strikersRanger').noUiSlider({ 
      start: [0], 
      step: 1, 
      behaviour: 'tap-drag', 
      range: { 
      'min': 0, 
      'max': 8 
      } 
     }, true); 

     $("#pips-values").noUiSlider_pips({ 
    mode: 'values', 
    values: [1,2,3,4,5,6,7,8], 
    density: 8 
}); 

     $("#pips1-values").noUiSlider_pips({ 
    mode: 'values', 
    values: [1,2,3,4,5,6,7,8], 
    density: 8 
}); 

     $("#pips2-values").noUiSlider_pips({ 
    mode: 'values', 
    values: [1,2,3,4,5,6,7,8], 
    density: 8 
}); 


var guardsval; 


$(".guardsRanger").on({ 
    set: function(){ 
    guardsval = $(".guardsRanger").val(); 
    } 
}); 

$(".jacksRanger").on({ 
    set: function(){ 
    jacksval = $(".jacksRanger").val(); 
    } 
}); 

$(".strikersRanger").on({ 
    set: function(){ 
    strikersval = $(".strikersRanger").val(); 
    } 
}); 

alert(guardsval); 

     }); 
+1

那麼,只要你在函數外定義'guardsval',你應該可以在函數範圍內修改它。 – 2014-10-28 18:39:45

+3

什麼不起作用? – Mathletics 2014-10-28 18:41:10

+0

我得到「未定義」(aka),它不斷回溯到全局變量,這很奇怪,令人沮喪。 – avago 2014-10-28 18:43:22

回答

2

的問題是,你不知道在使用JavasScript回調的概念。

請閱讀以下問題: Can someone explain me the callback functions

你的回調函數(它們是通過set屬性設置)操縱guardsval變量,只有當一些事件發生(在這種情況下set事件,我猜)。問題是,當guardsval尚未初始化時,您致電alert(guardsval)

+0

我明白你的意思了,不,我不是JavaScript嚮導,但這並不能讓我更接近解決方案。 :| – avago 2014-10-28 19:07:29

+0

我們都在那個時候,我們不瞭解回調。如果您只想爲您的問題提供解決方案:在設置變量後直接調用'alert'函數。 – dmonad 2014-10-29 08:44:29

+0

我一直在想,爲什麼沒有人能得到我想要在這裏實現的目標,而且絕對不是我的英語......想象一下擁有3種不同滑塊的頁面。如果slider1的值和slider2的值以及slider3的值加起來代表8,則下一個按鈕將被取消隱藏。聽起來很簡單,但仍然會導致很多麻煩,因爲能夠從函數內部調用警報(這是出於調試原因)並不提供解決方案,因爲我必須能夠保留這些值並訪問他們以外的3個功能莫名其妙。 – avago 2014-10-29 11:21:30