如何使用jquery创建动态变量?

时间:2013-11-14 11:48:57

标签: javascript jquery

我想要动态创建一些jquery变量。在我的代码中我有一个循环,并且循环值我想创建一些变量。这是我的示例代码。

array=["student","parent","employee"]

$.each(user_types, function( index, value ){
  var value+"_type" // this is the type of variable i want to build.
})

我找到了关于 eval 的功能。那段代码是这样的。

var type = "type"
eval("var pre_"+type+"= 'The value of dynamic variable, val';");

alert(pre_type) // this gives 'The value of dynamic variable, val' in alert box.

在编写 .js 文件时,有没有其他方法可供阅读eval功能。

3 个答案:

答案 0 :(得分:10)

每当您发现自己在变量名称中使用变量时,您可能希望使用对象文字。使用花括号{}创建对象,然后使用方括号表示法设置对象属性键:

var user_types = ["student","parent","employee"];
var types = {};

$.each(user_types, function( index, value ){
  types[value] = 'The value of dynamic variable, val';
});

JSFiddle

注意:你还没有标记它,但我认为因为你使用了each()你正在使用jQuery,如果我错了请纠正我。

答案 1 :(得分:4)

首先,我必须说我想不出你想要这样做的任何理由。

如果您确实需要在全局范围内拥有这些变量,则可以执行以下操作:

var array=["student","parent","employee"]

array.forEach(function(value){
  window[value+"_type"] = 'My value ' + value;
});

console.log(student_type);
console.log(parent_type);
console.log(employee_type);

如果你不想在全球范围内使用这些变量,恐怕我不知道一个优雅的解决方案。

我使用array.forEach而不是你的jQuery循环,因为问题根本与jQuery无关,因为我认为你没有说出足够的逻辑来制作一个连贯的例子。

编辑:我应该说清楚,尽管创建的'变量'的行为与全局范围内的其他变量大致相同,但它们不是变量。以下是它们的不同之处:

// Difference 1: hoisting
console.log(x); // undefined
console.log(y); // ReferenceError: y is not defined
var x = 5;
window[y] = 5;
console.log(x); // 5
console.log(y); // 5
// Difference 2: [[Configurable]] 
delete x;
delete y;
console.log(x); // 5
console.log(y); // ReferenceError: y is not defined

答案 2 :(得分:0)

如果要在字符串中添加中间变量,可以按以下步骤操作:

var itemSelect: number = 1;
$(`#tab${this.itemSelect}-tab`).tab('show');
/* Result -> $(`#tab1-tab`).tab('show');  */

/* HTML */
<a id="tb1-tab"> </a>