如何在jQuery Slider函数中创建全局var

时间:2011-10-24 16:00:47

标签: javascript jquery jquery-ui

我的脚本中有一个滑块:

var uniquePrice;
$( "#slider-secondary" ).slider({
  range: "min",
  value: 0,
  min: 0,
  max: 50,
  slide: function( event, ui ) {
    $( "#amount-secondary" ).val( ui.value );
            uniquePrice = ui.value * 1500;
  }
});
console.log(uniquePrice);

我需要在滑块函数之外的代码中进一步使用uniquePrice var。并且它不起作用 - console.log(uniquePrice);说“未定义”。

我做错了什么?

P.S。当然我在函数之前定义了全局变量,抱歉忘记包含在这里。

3 个答案:

答案 0 :(得分:1)

你必须在函数之外定义变量。

var uniquePrice;
$( "#slider-secondary" ).slider({
      range: "min",
      value: 0,
      min: 0,
      max: 50,
      slide: function( event, ui ) {
          $( "#amount-secondary" ).val( ui.value );
          uniquePrice = ui.value * 1500;
          console.log(uniquePrice);
      }
});

如果您希望变量在函数之外,您可以这样做:

var uniquePrice;
$( "#slider-secondary" ).slider({
      range: "min",
      value: 0,
      min: 0,
      max: 50,
      slide: function( event, ui ) {
          $( "#amount-secondary" ).val( ui.value );
          uniquePrice = ui.value * 1500;
          doLog();
      }
});

function doLog(){
    console.log(uniquePrice);
}

编辑:将console.log添加到滑块功能

答案 1 :(得分:1)

在该函数设置该变量之前,将调用console.log()。 js将:

  • 声明var
  • 然后设置滑块
  • 立即调用console.log()

因此,直到幻灯片发生变量将是未定义的

答案 2 :(得分:0)

我想我在某处读到,如果你忘记将变量名称的'var'放在其前面,它就会被声明为全局变量。请确认或否认;)

P.S。如果你完全删除#1行怎么办?你得到什么样的错误?