我需要在循环中动态创建变量,但我不知道如何。我已经阅读了有关使用eval();
的内容,但我发现它只是动态地更改变量中的值。
我需要这样的东西:
$(e).find('unidadeid').each(function () {
countUnidades++;
var Unidade[value inside countUnidades here] = $(this).text();
});
请明确你的步骤。我不是要求解决方案,而是要求帮助,作为一种学习方式。谢谢;)
答案 0 :(得分:8)
您有两种选择:
使用数组:
var unidades = [];
$(e).find('unidadeid').each(function () {
unidades.push($(this).text());
});
或
var unidades = $(e).find('unidadeid').map(function () {
return $(this).text();
}).get();
如果您确实想要的名称不仅仅是数字,请使用对象和括号中的符号:
var unidades = {}, countUnidades = 0;
$(e).find('unidadeid').each(function () {
countUnidades++
unidades['Unidade' + countUnidades] = $(this).text();
});
这会创建一个对象unidades
,其中包含Unidade0
,Unidade1
等属性。请注意each
会收到一个索引,因此您不需要{{} 1}}除非你想要别的东西:
countUnidades
答案 1 :(得分:5)
您始终可以使用数组:
var Unidade = [],
countUnidades = 0;
$(e).find("unidadeid").each(function(i) {
Unidade[countUnidades++] = $(this).text();
// ... or Unidade.push($(this).text());
// ... or Unidade[i] = $(this).text();
});
不要忘记DOM元素应始终具有唯一 ID,因此,如果each
引用某个元素的ID,则此处不需要unidadeid
次迭代。
答案 2 :(得分:2)
您的示例只是添加到我假设的具有增量值的数组。 Unidade在JSON中看起来像这样:
[
0: "text0",
1: "text1",
2: "text2"
]
但是如果你想将它添加到一个对象中,你只需遍历一个字符串数组,其中数组的长度与项目列表的长度相同。实际上,您可能希望将此值附加到数据属性,其中值是变量名称,文本是元素的内容。所以HTML就是这样的:
<div data-var="a">Text1</div>
<div data-var="b">Text2</div>
<div data-var="c">Text3</div>
需要这个JS:
var unidade = {};
$("div").find('unidadeid').each(function() {
unidade[$(this).data('var')] = $(this).text();
});
console.log(unidade);
对象看起来像这样:
{
"a": "Text1",
"b": "Text2",
"c": "Text3"
}
答案 3 :(得分:1)
我怀疑你需要动态创建变量。这很少有用。
您可能想了解数据结构;特别是我认为你只想要一个数组:
var unidades = []; // declare the array outside the loop
$(e).find('unidadeid').each(function () {
countUnidades++;
unidades[countUnidades] = $(this).text();
});
现在你有一个数组unidades
,其值是元素的text()
内容。
我不确定find('unidadeid')
是否是您想要的 - 这是找到所有<unidadeid>
元素,这不是HTML元素,但也许您正在处理自定义XML,或者它可能只是一个例子。
答案 4 :(得分:1)
嗯,只是为了完整性,这正是你要求的,尽管这是一个可怕的想法:
$(e).find('unidadeid').each(function () {
countUnidades++;
var t = $(this).text();
eval('Unidade' + countUnidades + ' = t;');
});
注意:
eval
很难使用。eval
很慢。通常你会使用数组:
var Unidade = [];
$(e).find('unidadeid').each(function () {
Unidade.push($(this).text());
});