我怎么从这里走
<div id="cat" class="super"></div>
<div id="cat" class="super"></div>
<div id="bird" class="super"></div>
<div id="dog" class="super"></div>
var allElements = document.getElementsByClassName('super');
for(var i = 0; i < allElements.length; i++) {
allElements[i].id && console.log(allElements[i].id);
}
正在给我ID的列表:猫狗鸟...
要动态地将个人var
分配给类名super
中的每个ID,而不是像列表/数组中的编号那样,而是像实例中那样,通过其ID来分配
var new_el_1 = document.getElementById("cat");
var new_el_2 = document.getElementById("dog");
var new_el_3 = document.getElementById("bird");
...
所以我的基本问题是如何从我的观点获得示例结果。
答案 0 :(得分:1)
最好将这些值存储在数组中
let new_el = [];
for (let i = 1; i <= numElements; i++) {
new_el[i] = document.getElementById(`array-element-${i}`);
}
一旦存储,就可以这样访问它们:
new_el[2] // returns the element #array-element-2
答案 1 :(得分:1)
document.querySelectorAll('.super').forEach((div,index) => div.setAttribute('id','array-element-'+index));
<div class="super"></div>
<div class="super"></div>
<div class="super"></div>
<div class="super"></div>
<div class="super"></div>
答案 2 :(得分:1)
如果您试图创建可通过DOM中的ID进行访问的变量,请考虑创建一个对象,该对象的属性映射到所需的元素:
var allElements = document.getElementsByClassName('super');
var elementsMap = {};
for(var i = 0; i < allElements.length; i++) {
var id = allElements[i].id;
if(allElements[i].id) {
elementsMap[id] = document.getElementById(id);
console.log(elementsMap[id]); //access each element by the id
}
}
答案 3 :(得分:0)
我绝对同意MTCoster的回答,您最好将这些元素存储在数组中。这是可怕的代码。但是,这并不能回答您的问题。 window["variable_name"]
是您要寻找的。这将创建单个变量。
for (let i = 0; i < allElements.length; i++) {
window['new_el_' + i] = document.getElementById(allElements[i].id);
}