2014-10-28 121 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