2015-10-05 51 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

相关问题