javascript - 如何按类定位列表元素内的项目?
问题描述
假设我们有一个<ol>
id #ol1 并且我们<li>
使用 append 方法在其中生成项目,并且这些 li 包含一个输入和一个按钮。
有没有办法通过索引号来定位特定的列表项,比如document.querySelectorAll('#ol1 li')[3]
获取第 4 个 li (0,1,2,3) 元素,然后按类在其中选择一个项目?
如果我们选择按钮,class=remove
我们如何定位它所在的容器并使用someselector.remove()
它来删除它而无需使用 id,那么基本上我们的删除函数如何知道<li>
要删除哪个?(图片解释)?
我正在寻找一个纯 javascript 解决方案,但是如果您建议使用 jquery 的内容,请同时包含 js 逻辑。
*msg to mods:我打开了一个新问题,因为编辑前一个问题会显着改变主题。
function append() {
var index = document.getElementById("ol1").getElementsByTagName("li").length;
var ol = document.getElementById("ol1");
var li = document.createElement("li");
li.innerHTML = (`LIST ITEM <input class=input value=this is list item number ${index}><button class=remove>REMOVE</button>`);
ol.append(li)
}
<html>
<body>
<button id="btn1" onclick="append()">Append</button>
<ol id="ol1">
</ol>
</body>
</html>
解决方案
要回答您的问题,您可以使用 nth-child 或ol.querySelectorAll('li')[idx]
但是你真的想在 OL 上使用 eventListener 和最接近的方法
function append() {
var index = document.getElementById("ol1").getElementsByTagName("li").length;
var ol = document.getElementById("ol1");
var li = document.createElement("li");
li.innerHTML = (`LIST ITEM <input class=input value=this is list item number ${index}><button class=remove>REMOVE</button>`);
ol.append(li)
}
document.getElementById("ol1").addEventListener("click",function(e) {
const tgt = e.target;
if (tgt.classList.contains("remove")) tgt.closest("li").remove();
})
<html>
<body>
<button id="btn1" onclick="append()">Append</button>
<ol id="ol1">
</ol>
</body>
</html>
推荐阅读
- python - 如何将条目小部件中的数据保存在列表中?
- python - 'd for n' 在 sorted(d for n, d in G.degree()) 中是什么意思?
- c - 如何将整数和字符串存储到二维中?
- python - 使用 Boto3 获取 AWS 配置选项
- kotlin - 无法在 intelliJ 中运行 kotlin“hello world”示例
- typescript - 无效的 Stripe API 版本:连接到 stripe api 时 [object Object]
- c - 使用泰勒展开的正弦函数
- python - 手动/本地安装的 python 包不显示在 Visual Studio 中
- swoole - 如何使用 SWOOLE 异步执行函数?
- google-analytics - 如何在 Google Analytics 中对自然机器人流量使用搜索词排除