我正在尝试使用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
变量按预期设置。
答案 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;");