1

次のようなjqueryと動的変数名を使用して、javascriptグローバル変数を設定しようとしています:

var home_phone_number // located outside of any functions
.
.
.
function setPhoneVars(phone){
// do stuff here to determine the correct prefix
thePrefix = 'home_phone_'
$(thePrefix + "number").val(phone.number);

}

これを行うと、home_phone_number の値が未定義になります。

しかし、電話番号を手動で設定すると、次のようになります。

home_phone_number = phone.number

変数は期待どおりに設定されます。

4

4 に答える 4

12

グローバル変数はwindowオブジェクトのプロパティであるため、次のようにアクセスできます。

window[thePrefix+'number'] = phone.number;
于 2012-10-22T19:41:22.850 に答える
1

windowオブジェクトを介してグローバル変数にアクセスできます。

var home_phone_number = "value";

function setPhoneVars(phone) {
    var thePrefix = "home_phone_";
    window[thePrefix + "number"] = phone.number;
}
于 2012-10-22T19:41:44.773 に答える
1

そのような多くのグローバルを持つ代わりに..単一のオブジェクトを使用できます..

var globals = {
   home_phone_number: 0 // located outside of any functions
} 


function setPhoneVars(phone){
  // do stuff here to determine the correct prefix
  thePrefix = 'home_phone_'
  globals[thePrefix + "number"] = phone.number;
}
于 2012-10-22T19:42:51.293 に答える
0

あなたの JQuery の使用は適切ではないと思います。.val() は、HTML 要素、つまり DOM 内の HTML オブジェクトの値を設定するためのものです。

動的 JavaScript 変数を単純に設定するには、文字列を実行可能コードとして扱う JavaScript 関数である eval() を使用できます。

thePrefix = "home_phone_";
eval(thePrefix + "number = phone.number;");
于 2012-10-22T19:53:18.050 に答える