Javascript 如何访问函数中的变量?

Javascript 如何访问函数中的变量?,javascript,nouislider,Javascript,Nouislider,我知道这听起来像是一个重复的问题,但我已经尝试了无数次堆栈溢出的事情,但它不起作用。我尝试做的是noUiSlider,我尝试基本上获得每个滑块的3个值,然后以我希望的方式使用这些值-例如,如果滑块的总值加起来等于给定值,则打开或关闭下一个按钮 下面是有问题的代码: // On document ready, initialize noUiSlider. $(function(){ $('.guardsRanger').noUiSlider({

我知道这听起来像是一个重复的问题,但我已经尝试了无数次堆栈溢出的事情,但它不起作用。我尝试做的是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);

      });

问题是,您不理解JavasScript中回调的概念

请阅读以下问题:


您的回调函数是通过set属性设置的,它们仅在某些事件发生时操作guardsval变量。我猜,在本例中是set事件。问题是,当guardsval尚未初始化时,调用alertguardsval

好的,只要你在函数之外定义guardsval,你就应该能够在函数的范围内修改它。我没有定义,也就是说它一直引用全局变量,这很奇怪,也很令人沮丧。你能把完整的代码放在小提琴上吗?否则真的很难知道。使用当前的代码片段,您只是定义事件,而不是触发事件。所以它点击了guardsval的最后一行,如前所述,未定义。更新了代码,尽管我不确定这有多大帮助…:你没有把警报放在正确的地方。尝试定义var-guardsval='foo';我打赌警报会显示“foo”,我明白你的意思,不,我不是javascript向导,但这也不会让我更接近解决方案|我们都在那一点上,我们不理解回调。如果你只是想解决你的问题:在设置变量后直接调用alert函数。我一直在想为什么没有人知道我在这里要实现的目标,而这肯定不是我的英语。。。想象一个页面有3个不同的滑块。如果slider1的值、slider2的值和slider3的值加起来等于8,那么next按钮将被取消隐藏。听起来很简单,但仍然会带来很多麻烦,因为能够从函数内部调用警报(仅用于调试原因)并不能提供解决方案,因为我必须能够保留这些值并以某种方式在3个函数外部访问它们。看起来,你仍然没有理解我所说的。如果您熟悉调试器或alertguardsval,请在每个回调的开头放置一个console.logguardsval,然后单击一些按钮。也许这会帮助你理解这个问题。