我有这个HTML
<div class="calListChip" id="label-bDd1aDFjNnQ2aHFxOTN2cGQyM2JhaXA2cmtAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ" title="Testkalender1">
<div class="calListChip" id="label-OWFmbmdwbWprbTRxMmFrOTNycGlicmM2bjBAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ" title="Testkalender2">
我已经得到了这段代码,用html div的标题创建变量作为名称然后我将html对象的标签作为参数传递给变量。
var elements = document.body.getElementsByClassName('calListChip');
var view1 = [];
//For each element found
for (var i = 0; i < elements.length; i++) {
//Variable names cant inlude spaces
var title = elements[i].title;
title = title.replace(/ +/g, "");
//create the variable
window[title] = elements[i].id;
//if 'test' exist in the title, add the variable to an array
if (elements[i].title.toLowerCase().indexOf("test") >= 0)
{
view1.push(window[title]);
}
};
但是view1数组不能获得变量引用,而是一个带有标题名称的字符串,我后来无法使用它。
这是我想要的结果
view1 : [Testkalender1, Testkalender2]
这是我得到的结果
view1 : ["Testkalender1", "Testkalender2"]
问题是,我不知道html元素的数量或标题/标签,所以我需要动态创建变量,然后通过标题中的关键字将它们放在正确的数组中
有什么建议吗?
答案 0 :(得分:1)
目前尚不清楚您希望如何生成所需的结果(例如数据的来源),但我可以帮助解释当前代码的情况。当你这样做时:
window[title] = elements[i].id;
您正在创建一个名为title
的全局变量,并为其分配elements[i].id
中的字符串值。所以,现在你有一个带有字符串的全局变量。
以后这样做:
view1.push(window[title])
您只是在view1
数组中推送该字符串的副本。该字符串与您的全局变量无关。因此,view1
最终将成为一个字符串数组。
如果你希望view1
最终成为像你的例子一样的对象数组:
view1[0] = {
name: 'TestKalendrar',
items: [Testkalender1, Testkalender2]
};
然后,你必须将对象推入数组,而不是字符串。
我应该补充一点,我不知道你用这一行创建了全局变量:
window[title] = elements[i].id;
正在以任何方式帮助您解决问题。它没有必要。
我很乐意帮助您获得不同的结果,但到目前为止,您已展示了所需的对象数组,但未向我们显示您从name
获取items
属性的位置{{1}}财产。如果您可以编辑问题以显示这些值的来源,我们可以帮助您创建解决方案。
答案 1 :(得分:0)
我重新编写了一些代码,确实创建了变量,请参阅http://jsfiddle.net/smylydon/Q5m6Q/中的小提琴
var elements = document.body.getElementsByClassName(&#39; calListChip&#39;);
var view1 = [];
//找到每个元素 for(var i = 0,length = elements.length; i&lt; length; i ++){
//Variable names cant inlude spaces
var title = elements[i].title;
title = title.replace(/ +/g, "");
//create the variable
window[title] = elements[i].id;
//if 'test' exist in the title, add the variable to an array
if (title.toLowerCase().indexOf("test") >= 0) {
view1.push(window[title]);
console.log('variable:', window[title]);
}
};
console.log(&#39; view1:&#39;,view1);