我想动态更改列表元素的顺序。单击后,被单击的元素应跳转到第一位。但它总是跳到最后一个地方。有什么建议吗? const ulElement = document.getElementById('nav-list'); const fragment = document.createDocumentFragment(); const listItems = ['Home', 'Work', 'Contact']; listItems.forEach((item) => { const li = document.createElement('li'); li.textContent = item; li.setAttribute('id', item.toLowerCase()); li.addEventListener('click', (event) => { listItems.forEach((items, i) => { if (items.toLowerCase() === event.target.id) { listItems.splice(i, 1); listItems.unshift(event.target.id); } fragment.appendChild(li); }); ulElement.appendChild(fragment); console.log(ulElement); }); fragment.appendChild(li); }); ulElement.appendChild(fragment);<ul id="nav-list"></ul>
3 回答
临摹微笑
TA贡献1982条经验 获得超2个赞
替换行:
ulElement.appendChild(fragment);
和:
ulElement.insertBefore(fragment, ulElement.firstChild);
一只名叫tom的猫
TA贡献1906条经验 获得超3个赞
谢谢你的提问;我的代码在这里:
const ulElement = document.getElementById('nav-list');
const fragment = document.createDocumentFragment();
const listItems = ['Home', 'Work', 'Contact'];
listItems.forEach(item=>{
const li = document.createElement('li');
li.textContent = item;
li.setAttribute('id', item.toLowerCase());
fragment.appendChild(li);
return li;
});
ulElement.appendChild(fragment);
ulElement.addEventListener("click",event=>{
let li =event.target;
if(li.tagName==='LI'){
fragment.appendChild(li);
ulElement.insertBefore(fragment,ulElement.firstElementChild);
}
});
我觉得这个方案更好。
添加回答
举报
0/150
提交
取消