2011-09-12 18 views
0

は、私は、オブジェクトリテラル内でグローバル変数を参照し、問題を抱えている:Javascriptの変数のスコープの問題

function f() { 
    globalVar = "test"; 
} 

$(document).ready(function() { 
    f(); 
    var a = $("#id").autocomplete({ 
     lookup: globalVar //says globalVar is undefined 
    }); 
    $("#button").click(function() { 
     alert(globalVar); //works 
    }); 
}); 

私はglobalVarするlookupの値を設定できますか?

+0

これは実際のコードですか? 'alert()'には 'globalVar'が定義されているわけではありませんが、プロパティ値の割り当てには未定義です。 – user113716

+0

どのブラウザでテストしましたか? – hugomg

+0

@patrickあなたが正しいです、アラートは、実際にはクリックイベントに表示されています。警報は私がそれを持っていた方法では動作しませんでしたが、今のように間違いなく動作します。 – Flash

答えて

0

動作しないはずない理由は、それがオートコンプリート機能の使用方法についての誤解、または関数自体に問題に関係しているのいずれか、存在しません。しかし、グローバルを割り当てる必要があり、グローバルにオブジェクトにそのように割り当てることは問題ありません。どちらの方法でも、コードがなくても(つまり、オートコンプリート機能)、問題の内容を伝えることはできません。

1

このようなすべての機能の外で定義できます。

var globalVar ; 

function f() { 
    globalVar = "test"; 
} 

$(document).ready(function() { 
    f(); 
    alert(globalVar); //works 
    var a = $("#id").autocomplete({ 
     lookup: globalVar 
    }); 
});