【发布时间】:2020-05-09 16:52:57
【问题描述】:
我有一些动态创建的元素。 我想将这些元素推送到一个数组中,以便能够循环所有它们并为每个元素分配一个属性。
问题是,如果我声明这样的数组var Array = [];,我无法将 HTML 元素推送到它。控制台日志说:
无法读取未定义的属性“push”
如果我像这样var Array; 声明数组,那么我无法将元素推送到它。
这就是我想要的。
var listgroupdiv = document.createElement("div");
var listgroupdiv1 = document.createElement("div");
var listgroupdiv2 = document.createElement("div");
var ListGroupClass = document.createAttribute("class");
ListGroupClass.value = "row";
listgroupdiv.setAttributeNode(ListGroupClass);
var ListGroupClass1 = document.createAttribute("class");
ListGroupClass1.value = "col-4";
listgroupdiv1.setAttributeNode(ListGroupClass1);
var ListGroupClass2 = document.createAttribute("class");
ListGroupClass2.value = "list-group";
listgroupdiv2.setAttributeNode(ListGroupClass2);
var ListGroupID = document.createAttribute("id");
var ListGroupRole = document.createAttribute("role");
ListGroupID.value = "list-tab";
ListGroupRole.value = "tablist";
listgroupdiv2.setAttributeNode(ListGroupID);
listgroupdiv2.setAttributeNode(ListGroupRole);
var id_href = 0;
var Array_A_Group = [];
for(var b = 0; b < CommentArray.length; b++){
if(CommentArray[b].indexOf("Parts:") > -1){
var listgroupa = document.createElement("a");
var listgroupaClass = document.createAttribute("class");
var listgroupaID = document.createAttribute("id");
var listgroupaToggle = document.createAttribute("data-toggle");
var listgroupaHref = document.createAttribute("href");
var listgroupaRole = document.createAttribute("role");
var listgroupaAria = document.createAttribute("aria-controls");
listgroupaClass.value = "list-group-item list-group-item-action";
listgroupaID.value = String(id_href);
listgroupaToggle.value = "list";
listgroupaHref.value = String(id_href);
listgroupaRole.value = "tab";
listgroupaAria.value = "home";
listgroupa.setAttributeNode(listgroupaClass);
listgroupa.setAttributeNode(listgroupaID);
listgroupa.setAttributeNode(listgroupaToggle);
listgroupa.setAttributeNode(listgroupaHref);
listgroupa.setAttributeNode(listgroupaRole);
listgroupa.setAttributeNode(listgroupaAria);
var CommentText = document.createTextNode(CommentArray[b]);
listgroupa.appendChild(CommentText);
Array_A_Group[id_href].push(listgroupa); // <<-- Problem is in this line!
id_href++;
}
}
我的目标是创建一个这样的 div:
<div class="row">
<div class="col-4">
<div class="list-group" id="list-tab" role="tablist">
<a class="list-group-item list-group-item-action active" id="list-home-list" data-toggle="list" href="#list-home" role="tab" aria-controls="home">Home</a>
<a class="list-group-item list-group-item-action" id="list-profile-list" data-toggle="list" href="#list-profile" role="tab" aria-controls="profile">Profile</a>
<a class="list-group-item list-group-item-action" id="list-messages-list" data-toggle="list" href="#list-messages" role="tab" aria-controls="messages">Messages</a>
<a class="list-group-item list-group-item-action" id="list-settings-list" data-toggle="list" href="#list-settings" role="tab" aria-controls="settings">Settings</a>
</div>
</div>
<div class="col-8">
<div class="tab-content" id="nav-tabContent">
<div class="tab-pane fade show active" id="list-home" role="tabpanel" aria-labelledby="list-home-list">...</div>
<div class="tab-pane fade" id="list-profile" role="tabpanel" aria-labelledby="list-profile-list">...</div>
<div class="tab-pane fade" id="list-messages" role="tabpanel" aria-labelledby="list-messages-list">...</div>
<div class="tab-pane fade" id="list-settings" role="tabpanel" aria-labelledby="list-settings-list">...</div>
</div>
</div>
</div>
具有唯一的 ID 和唯一的 href,然后为每个 <a> 添加一个 TextNode。
【问题讨论】:
-
您好,欢迎来到 SO。您知道Element.classList 及其
add方法吗? -
天哪,这真的很酷。 :O
标签: javascript html arrays for-loop dynamic