[英]How to insert first element to list?
我尝试使用appendChild
和cloneNode
来插入带有锚点的 li 标签
let alphabet = document.querySelector('.alphabet');
let ul = document.createElement("ul");
let li = document.createElement("li");
let anchor = document.createElement('a');
ul.className = "alphabet__list";
alphabet.appendChild(ul);
let arr_RU = ['А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Э', 'Ю', 'Я'];
for (i = 0; i < arr_RU.length; i++) {
li.className = "alphabet__item";
anchor.href = '#'+arr_RU[i];
anchor.innerText = arr_RU[i];
ul.appendChild(li.cloneNode(true));
li.appendChild(anchor);
}}
但首先a
标签不在列表中。 如何解决?
Append 在将li
附加到ul
之前anchor
到li
let alphabet = document.querySelector('.alphabet'); let ul = document.createElement("ul"); let li = document.createElement("li"); let anchor = document.createElement('a'); ul.className = "alphabet__list"; alphabet.appendChild(ul); let arr_RU = ['А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Э', 'Ю', 'Я']; for (i = 0; i < arr_RU.length; i++) { li.className = "alphabet__item"; anchor.href = '#' + arr_RU[i]; anchor.innerText = arr_RU[i]; li.appendChild(anchor); // changed here ul.appendChild(li.cloneNode(true)); }
<div class='alphabet'> </div>
您还可以将a
和li
元素的创建移动到循环内部,这将使代码更具可读性且不易出错,如下所示:
let alphabet = document.querySelector(".alphabet"); let ul = document.createElement("ul"); ul.className = "alphabet__list"; alphabet.appendChild(ul); let arr_RU = [ "А", "Б", "В", "Г", "Д", "Е", "Ё", "Ж", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Э", "Ю", "Я", ]; for (i = 0; i < arr_RU.length; i++) { let anchor = document.createElement("a"); anchor.href = "#" + arr_RU[i]; anchor.innerText = arr_RU[i]; let li = document.createElement("li"); li.className = "alphabet__item"; li.append(anchor); ul.append(li); }
<div class="alphabet"></div>
您可以在每次迭代时重新创建元素,不需要cloneNode()
,还可以切换附加顺序。 首先 append a
到li
然后 append li
到ul
。
您遇到的问题是您首先将一个空的li
克隆附加到ul
,然后将一个a
附加到原始li
,这与您刚刚附加的克隆不同。 在第二次迭代中,原始li
现在包含a
,然后您再次clone
它, append 克隆到ul
中,这就是为什么您没有获得第一次迭代的值的原因。
let alphabet = document.querySelector('.alphabet'); let ul = document.createElement("ul"); ul.className = "alphabet__list"; alphabet.appendChild(ul); let arr_RU = ['А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Э', 'Ю', 'Я']; for (let i = 0; i < arr_RU.length; i++) { let li = document.createElement("li"); let anchor = document.createElement('a'); li.className = "alphabet__item"; anchor.href = '#'+arr_RU[i]; anchor.innerText = arr_RU[i]; li.appendChild(anchor); ul.appendChild(li); }
<div class="alphabet"></div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.