【发布时间】:2022-01-23 04:19:25
【问题描述】:
我正在开发 chrome 扩展并尝试将事件侦听器添加到 getElementsByClassName 变量,其中元素是使用模板字符串动态添加的。
我尝试了很多代码的更改,但代码不起作用。
该代码应该从数组“recipeList”中删除目标元素,将数组存储在localStorage中,然后使用模板字符串再次将更新后的数组“recipeList”渲染到HTML代码中。
删除按钮功能
let delBtn = document.getElementsByClassName("del-btn");
for(let i = 0; i < delBtn.length; i++) {
delBtn[i].addEventListener("click", function() {
recipeList.splice(i, 1);
localStorage.setItem("recipeList", JSON.stringify(recipeList));
recipeList = JSON.parse(localStorage.getItem("recipeList"));
render(recipeList);
if(!recipeList.length) {
tabBtn.style.width = "100%";
delAllBtn.style.display = "none";
}
});
}
渲染代码
function render(list) {
let recipeURL = "";
for(let i = 0; i < list.length; i++) {
recipeURL += `
<div class="mb-2 row">
<div class="col-1 num-btn">
${i+1}
</div>
<div class="col-10">
<div class="recipe-url">
<a target="_blank" href="${list[i]}">
${list[i]}
</a>
</div>
</div>
<div class="col-1 del-btn">
<a href="#">
<i class="bi bi-trash-fill"></i>
</a>
</div>
</div>
`
}
urlList.innerHTML = recipeURL;
console.log(delBtn);
}
【问题讨论】:
标签: javascript html google-chrome-extension event-handling htmlcollection