我有2个变量,如此
var variable_1 = "foo";
var variable_2 = "bar";
我使用一个函数来获取复选框输入的值,对于每个选中的复选框,我想加载特定的变量,该变量取决于复选框的值。
$("input:checked").each(function() {
$(div).append('variable_'+$(this).val());
}
所以我将文本'variable_'与每个复选框的值连接起来。
谢谢!
答案 0 :(得分:1)
您可以使用eval
动态获取任何变量值。
var variable_1 = "foo";
var variable_2 = "bar";
$("input:checked").each(function() {
$(div).append(eval('variable_'+$(this).val()));
}
注意:这不是最佳解决方案,因为eval
也存在一些安全问题。
答案 1 :(得分:0)
使用属性创建对象并通过obj['prop']
表示法访问该属性,请参阅以下代码:
var myObj = {'variable_1': 'foo', 'variable_2': 'bar'};
$("input:checked").each(function() {
var dynamicVariableName = 'variable_' + $(this).val()
var dynamicVarValue = myObj[dynamicVariableName];
$(div).append(dynamicVar);
}
如果您的变量存在于窗口下,最好创建包含该变量的新全局对象,而不是将该变量保持为全局变量。
答案 2 :(得分:0)
因为从用户输入调用变量或函数是危险的,特别是如果您只使用两个不同的变量,最好使用简单的if语句。
这个是三元的,如果:
var variable_1 = "foo";
var variable_2 = "bar";
$("input:checked").each(function() {
var isChecked = $(this).is(':checked');
var append = (isChecked) ? variable_1 : variable_2;
$(div).append(append);
}
或者,您可以将switch语句用于多个值。
答案 3 :(得分:0)
如果变量是全局,那么您可以使用
<ldap:context-source id="contextSource" url="ldap://localhost:389"
base="dc=test,dc=com" username="cn=admin,dc=test,dc=com" password="pass000" />
阅读或
var y = window["variable_" + x];
动态写入。
然而,更好的做法是使用对象来存储它们,而不是使用单独的变量......
window["variable_" + x] = y;
Javascript也可以使用var data = { variable_1: null,
variable_2: null };
...
y = data["variable_" + x];
来访问动态变量,甚至可以使用局部变量
eval
更令人惊讶的是,它允许动态创建新的局部变量......
function foo(s) {
var x = 12;
return eval(s);
}
console.log(foo("x"));
但是var y = 42;
function foo(s) {
var x = 1;
eval(s);
return y; // may be global y or a local y defined by code in s
}
foo("x") // returns 42
foo("var y = 99") // returns 99 (but global y is not changed!)
的这些用法应该被视为一个错误,而不是一个功能,最好避免使用(它们也使得代码基本上无法优化或理解,所以&#34;只是不要这样做&#34; #34;™)