2011-10-24 93 views
0

內部的全局變量我有我的劇本里的滑塊:如何創建jQuery的滑塊功能

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變種在代碼中,滑塊功能之外。它不起作用 - console.log(uniquePrice);說「未定義」。

我在做什麼錯?

P.S.當然,我在函數之前定義了全局變量,遺憾的是忘記包含在這裏。

+1

你在哪裏做console.log()調用? –

+0

在函數之後,將該行添加到問題中。 – webstyle

回答

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

這將是最好的,但你也可以做'window.uniquePrice'。 – Jack

+0

我沒有意識到這一點,非常有用。以我的方式思考你的方式似乎會更好,因爲那麼這個變量不需要全局聲明,但仍然可以在任何範圍內使用 –

+0

我做得一樣,我只是沒有包括這一行,編輯了這個問題。結果是一樣的 - console.log(uniquePrice);說「未定義」。 – webstyle

0

我覺得我讀的地方,如果你忘記放置變量名稱的「var」infront,它將被聲明爲全局變量。請確認或否認這一點;)

P.S.如果你完全刪除第1行,會發生什麼?你會得到什麼樣的錯誤?

1

console.log()將在該函數設置該變量之前被調用。 JS的意志:

  • 聲明VAR
  • 然後設置滑塊
  • 將立即調用的console.log()

所以直至滑動發生的變量是不確定的

+0

在我移動滑塊後,var也是未定義的。 我並不完全明白你的意思,你可以舉一個解決方案的例子嗎? – webstyle

+0

這是我的行動解決方案的一個jsfiddle。 http://jsfiddle.net/MqXYt/ –