使用jquery和动态变量名设置全局变量

时间:2012-10-22 19:39:38

标签: javascript jquery

我正在尝试使用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 个答案:

答案 0 :(得分:12)

全局变量是window对象的属性,因此可以这样访问:

window[thePrefix+'number'] = phone.number;

答案 1 :(得分:1)

您可以通过window对象访问全局变量,例如

var home_phone_number = "value";

function setPhoneVars(phone) {
    var thePrefix = "home_phone_";
    window[thePrefix + "number"] = phone.number;
}

答案 2 :(得分: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;
}

答案 3 :(得分:0)

我认为你使用JQuery是不合适的; .val()用于设置HTML元素的值,即DOM中的HTML对象。

要简单地设置动态JavaScript变量,您可以使用eval()这是一个JavaScript函数,它将字符串视为可执行代码;

thePrefix = "home_phone_";
eval(thePrefix + "number = phone.number;");