2015-10-05 33 views
0

有人請告訴我如何在局部範圍之外使用局部變量?在函數外部使用局部變量不能按預期工作

function dosomething(e) { 
    current = jQuery(e); 
    currentStartDate = current.datepicker('getDate'); 
    newStartDate = Date.parse(currentStartDate)/1000; 
}; 

newDate = null; 
    jQuery(".gform_wrapper li input#input_2_1").change(function() { 
      newDate = dosomething(this); 
}); 

// Use newDate here 
+0

你*可以*使用'newDate'無論你想要的地方。問題在於這個'onchange'事件運行之後,它不會*設置*。 –

+0

newDate將被設置爲'dosomething(e)函數',因爲你沒有從函數返回任何東西。你的'dosomething(e)'需要有'return newStartDate';' –

+0

@火箭 - 這似乎是問題所在,如果有解決方法,我會欣賞一個例子!謝謝你指出。 – TheHelper

回答

0

不能使用它的局部範圍之外,除非它被分配給了全球範圍。如果它不存在,JavaScript將自動添加一個全局範圍變量和名稱,但是這是一個奇怪的事件,大部分時間都不是程序員的意思。嚴格使用來阻止它。無論如何,您必須將其分配到全局範圍,並設置在本地範圍內。

function dosomething(e) { 
    current = jQuery(e); 
    currentStartDate = current.datepicker('getDate'); 
    newStartDate = Date.parse(currentStartDate)/1000; 
}; 



---> VAR newDate = null; 
     jQuery(".gform_wrapper li input#input_2_1").change(function() { 
       newDate = dosomething(this); 
    }); 

你只需要在這種情況下添加var。然後你可以在範圍之外使用它。

+0

當我設置newDate = null時,我沒有將其全局分配嗎? – TheHelper

+0

謝謝你收到凱西。 – TheHelper

+0

沒問題。 Javascript很棒,但可能會很痛苦。 – Casey