动态选择变量

时间:2016-03-16 05:58:51

标签: javascript jquery variables

我有2个变量,如此

var variable_1 = "foo";
var variable_2 = "bar";

我使用一个函数来获取复选框输入的值,对于每个选中的复选框,我想加载特定的变量,该变量取决于复选框的值。

$("input:checked").each(function() {
    $(div).append('variable_'+$(this).val());
}

所以我将文本'variable_'与每个复选框的值连接起来。

谢谢!

4 个答案:

答案 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;™)