2011-11-24 79 views
1

我有一个Javascript和全局变量litte问题。 根据我几分钟前在寻找解决方案时阅读的文章,函数外定义的变量是全局的,可以在整个文档中使用。那么,这似乎并不适用于我。基本上,甚至为什么我尝试的过程简化到这一点:函数不读取全局变量

var list_amount = 1; 
function createElements() { 
    window.alert('0'); 
    var cintfa_list_top = $("<div>").attr({"id":"intfa_list_top"}); 
    $('#intfa_list').empty() 
    $('#intfa_list').append(cintfa_list_top); 
    var j=0; 
    window.alert('1'); 
    for (j=0;j<list_amount;j++) { 
     window.alert('2'); 
      ...... 
      .... 
      .. 

我得到了0和1的window.alert,但不是2.当我设置一个window.alert(list_amount)函数里面,它返回undefined。全局变量不应该在函数内部工作吗?如果我误解了某些东西,有没有办法让函数变量成为全局函数,而不必将它们添加到函数参数中?

+0

createElements()之外还有什么?这个函数是否在另一个函数中?如果是这样,list_amount不会是全局的,它将在本地函数 –

+1

您是否在声明list_amount之前调用createElements? –

+2

就是这样 - 卢克得到了 - 这是一个悬而未决的问题。声明被提升到顶部,设置为undefined,那么如果你在将它设置为1的行之前调用createElements,它仍然是未定义的 –

回答

0

您的代码中存在挂起脚本的错误。事实上,关闭和功能工作得很好(同时也注释掉$,因为这里没有定义)。

检查Firebug或Chrome/Opera JavaScript控制台是否有错误。 LE:在看到jsfiddle.net/ALd2b/2后,你应该在变量赋值后调用函数。

0

我试过你的代码http://jsfiddle.net/lastrose/ALd2b/,它似乎工作正常。 我唯一能想到的就是它的全部定义。

+0

嗯,那么它可能是一些代码错误waaay关闭别的地方。 Javascript bugfixing ahoy ..感谢您的测试:) – user1064701

+0

我猜他的代码看起来更像这个http://jsfiddle.net/ALd2b/2/ –

+0

不,可悲的是,它不。这将是一个简单的解决方案。 – user1064701