新闻中心

使用 J*aScript 从列表中删除特定元素

2025-10-29
浏览次数:
返回列表

使用 javascript 从列表中删除特定元素

本文旨在帮助开发者理解如何使用 J*aScript 从动态生成的列表中删除特定元素,而不是总是删除最后一个元素。我们将通过修改现有的 `deleteItem` 函数,使其能够识别被点击的元素,并从数组中正确地移除它。本文将提供详细的代码示例和解释,确保你能够轻松地将此功能集成到你的项目中。

理解问题:为什么总是删除最后一个元素?

原始代码中的 deleteItem 函数试图通过 document.getElementById("close") 获取要删除的元素。然而,getElementById 只能获取页面上 第一个 具有指定 ID 的元素。由于你的列表项是动态生成的,并且可能没有唯一的 ID,因此 deleteItem 函数总是会尝试删除页面上的第一个 "close" 元素,这通常不是你想要删除的列表项。

解决方案:事件目标和 indexOf

为了正确删除特定元素,我们需要以下步骤:

  1. 传递事件对象: 修改 HTML 中的 onclick 事件处理程序,将事件对象 (event) 传递给 deleteItem 函数。
  2. 获取被点击的元素: 在 deleteItem 函数中,使用 event.target 获取实际被点击的元素。
  3. 获取元素的文本内容: 使用 event.target.innerHTML 获取被点击元素的文本内容,这对应于列表项的文本。
  4. 查找元素的索引: 使用 myArray.indexOf(clk) 找到该文本内容在数组中的索引。
  5. 删除元素: 使用 myArray.splice(index, 1) 从数组中删除该索引处的元素。
  6. 更新列表: 清空列表,然后使用更新后的数组重新生成列表。

代码示例

以下是修改后的 J*aScript 代码:

立即学习“J*a免费学习笔记(深入)”;

风车Ai翻译 风车Ai翻译

跨境电商必备AI翻译工具

风车Ai翻译 407 查看详情 风车Ai翻译
let myArray = ["Sugar", "Milk", "Bread", "Apples"];
let list1 = document.querySelector("#itemList");

//This function pushed my array items to create the list
arrayList = (arr) => {
  let items = arr.forEach(item => {
    let li = document.createElement('li');
    li.textContent = item;
    li.onclick = deleteItem; // Add onclick event to each list item
    list1.appendChild(li)
  });
}

arrayList(myArray)


//This function changed the background color of two of the list items to show that they are sold
const idSelector = () => {
  let idElement = document.getElementsByTagName("li")
  idElement[0].style.color = "red"
  idElement[3].style.color = "red"
}

idSelector()

//This function uses the user input from the form to add items to the list
updateList = (arr) => {
  let blue = document.getElementById("input").value;

  if (blue === "") {
    alert("Please enter a value if you wish to add something to your list.")
  } else {
    arr.push(blue);
    list1.innerHTML = '';
    arrayList(myArray)
    idSelector()
  }

}

//This function is meant to delete the specified item chosen by the user from the shopping list and the array
deleteItem = (event) => {
  let clk = event.target.innerHTML;
  //console.log(clk);
  let index = myArray.indexOf(clk);
  if (index > -1) 
  {
    myArray.splice(index, 1);
  }
  list1.innerHTML = '';
  arrayList(myArray)
}

以下是修改后的 HTML 代码:

<body>
    <div class="container&quot;>
        <h2>Shopping List</h2>

        <div class="header">
            <input type="text" id="input" placeholder="Item">
            <span onclick="updateList(myArray)" id="addBtn"><button>Add Item</button></span>
        </div>
        <span value="\uOOD7" class="close">
        <ul id="itemList">



        </ul>
    </span>
    </div>

    <script src="mainForTask2.js"></script>
</body>

关键修改:

  • 在 arrayList 函数中,为每个新创建的 li 元素添加了 onclick = deleteItem,这样点击列表项时就会触发 deleteItem 函数。
  • 删除了 span 标签上的 onclick 事件,因为现在点击列表项本身触发删除。
  • deleteItem 函数现在通过 event.target.innerHTML 获取点击的列表项的文本内容。

代码解释

  • event.target: event.target 属性指向触发事件的元素。在本例中,它是用户点击的
  • 元素。
  • event.target.innerHTML: 获取
  • 元素的文本内容,即列表项的名称。
  • myArray.indexOf(clk): 在 myArray 数组中查找与被点击列表项的文本内容匹配的元素的索引。如果找不到匹配的元素,indexOf 将返回 -1。
  • myArray.splice(index, 1): 从 myArray 数组中删除索引为 index 的元素。splice 函数会修改原始数组。

注意事项

  • 确保数组中的元素与列表项的文本内容完全匹配。如果存在空格或大小写差异,indexOf 可能无法找到正确的索引。
  • 如果你的列表项包含 HTML 元素,例如按钮或图标,你需要修改代码以获取正确的文本内容。
  • 在大型列表中,频繁地清空和重新生成列表可能会影响性能。考虑使用更有效的方法来更新列表,例如只更新已更改的元素。

总结

通过传递事件对象并使用 event.target 和 indexOf,我们可以准确地识别并删除用户点击的特定列表项。这种方法避免了总是删除最后一个元素的问题,并提供了更直观和用户友好的体验。希望本教程能够帮助你更好地理解 J*aScript 事件处理和数组操作。

以上就是使用 J*aScript 从列表中删除特定元素的详细内容,更多请关注其它相关文章!


# java  # javascript  # 自定义  # 第一个  # 列表中  # 组中  # red  # 为什么  # apple  # ai  # app  # js  # html  # 应聘seo演讲  # 日本日本网站推广百度  # 营口seo服务有哪些  # 微营销的推广思路  # 怎么做携程小店营销推广  # 广元网站推广服务商  # 江津网站建设哪家好  # 地产seo托管  # 视频网站推广有免费  # 全网热点关键词推荐排名  # 有哪些  # 有何区别  # 能做什么  # 如何实现  # 清空  # 多线程 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: HTML5原生日期选择器与jQuery UI:实现日期选择器的联动与程序化控制  Golang如何优雅处理error_Golang error处理最佳实践总结  Lar*el头像管理:图片缩放与旧文件删除的最佳实践  微博网页版怎么开启两步验证_微博网页版账号安全两步验证设置方法  Golang如何使用new_Go new分配内存机制讲解  使用Python高效删除Word宏并转换DOCM为DOCX格式  汽水音乐车机版8.9下载 汽水音乐车机版8.9版本安装入口  ACG动漫手机版官网入口 手机ACG动漫APP在线观看正版  深入理解J*a合成构造器:何时以及为何阻止其生成  QQ邮箱官方网站登录入口_QQ邮箱网页版在线使用  12306选座怎么选到临时改签座_12306改签选座策略与步骤  mcjs网页版流畅运行 mcjs低配电脑畅玩入口  小红书商家版怎样在笔记嵌入商品卡路径_小红书商家版在笔记嵌入商品卡路径【挂载教程】  html两个JS只运行一个怎么办_让双JS在html中都运行方法【技巧】  Golang如何通过reflect操作map_Golang reflect map操作与遍历技巧  Lar*el 递归关系中排除指定分支的教程  Kafka Streams中基于消息头条件过滤消息的实现指南  Composer如何处理Git子模块(submodule)依赖_Composer与Git Submodule的对比与选择  Composer的 "licenses" 命令如何帮助你遵守开源协议_检查项目依赖的许可证合规性  Composer的 "conflict" 字段有什么用_如何声明不兼容的包以避免依赖冲突  Basecamp怎样用留言钉固定重点_Basecamp用留言钉固定重点【重点标记】  三星GalaxyZFold5怎样在相册制作折叠屏分镜_iPhone三星GalaxyZFold5相册制作折叠屏分镜【创意编辑】  Sublime Text怎么显示空格和制表符_Sublime显示不可见字符设置  移动端XML文件怎么转换成Excel 手机和平板上的解决方案  C#使用XPath查询节点时出错? 常见语法错误与调试技巧  126邮箱账号注册 电脑版登录入口  字由网在线版登录地址 字由网网页版安全入口  C++20的source_location是什么_C++在编译期获取源码位置信息用于日志和断言  Vue.js 图片显示异常排查:理解应用挂载范围与DOM ID唯一性  一加 14R 快充无反应_一加 14R 充电优化  漫画星球免费下拉式入口 漫画星球免费漫画在线阅读网站  Golang如何优化内存分配与垃圾回收_Golang内存管理与GC优化实践  蛙漫漫画官网在线入口 蛙漫全本漫画免费阅读平台  QQ邮箱网页版入口 QQ邮箱官方邮箱登录通道  Google翻译怎么语音输入_Google翻译语音输入功能使用与设置方法  Typer应用中动态命令行参数的解析与处理  可靠CSGO开箱平台解析 CSGO开箱网合集  Windows 11怎么彻底关闭定位_Windows 11服务中禁用Geolocation  C++如何检测键盘输入_C++ _kbhit与_getch函数非阻塞输入  b站怎么取消点赞_b站点赞取消操作方法  夸克浏览器网页版最新地址 夸克浏览器官方入口合集  TikTok国际版官网直达_TikTok国际版官网直达进入在线观看  c++ 获取系统当前时间 c++时间戳获取方法  1688商家版怎样分析买家画像精准供货_1688商家版分析买家画像精准供货【供货策略】  谷歌浏览器浏览体验优化_谷歌浏览器新版直连永久可用提示  Archive of Our Own官网直达 AO3最新可用地址一览  Django模型中自动计算可用余额的实现方法  J*aScript Promise链中如何正确终止后续.then执行并处理错误  12306选座怎么选到商务座_12306商务座选择与配置说明  深入理解rpy2中的类型转换:优化Python对象到R矩阵的映射 

搜索