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 变量,您可以使用 eval(),它是一个 JavaScript 函数,将字符串视为可执行代码;

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