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


使用 javascript 从列表中删除特定项

本文档旨在指导开发者如何使用 J*aScript 实现从列表中删除特定项的功能,而不是仅仅删除最后一项。我们将分析常见错误,并提供正确的实现方式,包括事件处理、索引查找以及数组操作,并提供完整的代码示例。

问题分析

初学者在实现列表项删除功能时,经常会遇到点击任何列表项都只删除最后一项的问题。这通常是由于以下原因造成的:

  1. 事件处理不当: onclick 事件直接绑定到包含所有列表项的容器上,而不是每个单独的列表项。
  2. 索引获取错误: 尝试获取要删除的元素的索引时,获取的是错误的值,或者根本没有正确获取到索引。
  3. splice() 方法使用不当: 即使获取了正确的索引,也可能因为 splice() 方法的使用方式不正确而导致删除错误。

正确的实现方式

以下是一个正确的实现方式,它解决了上述问题:

HTML 结构:

Jaaz Jaaz

开源的AI设计智能体

Jaaz 216 查看详情 Jaaz
<div class="container">
    <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>
    <ul id="itemList"></ul>
</div>

J*aScript 代码:

let myArray = ["Sugar", "Milk", "Bread", "Apples"];
let list1 = document.querySelector("#itemList");

// This function pushed my array items to create the list
arrayList = (arr) => {
  list1.innerHTML = ''; // Clear the list before re-rendering
  arr.forEach(item => {
    let li = document.createElement('li');
    li.textContent = item;
    li.addEventListener('click', deleteItem); // Add event listener 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");
  if (idElement.length > 0) { // Check if elements exist before accessing them
    idElement[0].style.color = "red";
    if (idElement.length > 3) {
      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);
    arrayList(myArray); // Re-render the list after adding
    idSelector();
    document.getElementById("input").value = ""; // Clear the input field
  }
}

//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.textContent; // Get the text content of the clicked list item
  let index = myArray.indexOf(clk);
  if (index > -1) {
    myArray.splice(index, 1);
  }
  arrayList(myArray); // Re-render the list after deleting
  idSelector();
}

代码解释:

  1. 事件监听器: 在 arrayList 函数中,我们不再使用 onclick 属性,而是使用 addEventListener 方法将 deleteItem 函数绑定到每个 li 元素的 click 事件上。这确保了每个列表项都有自己的事件处理程序。
  2. 获取点击的元素: 在 deleteItem 函数中,event.target 指向实际点击的 li 元素。我们使用 event.target.textContent 获取该元素的文本内容。
  3. 查找索引: myArray.indexOf(clk) 查找数组中与点击的元素的文本内容相匹配的元素的索引。
  4. 删除元素: 如果找到了索引(index > -1),则使用 myArray.splice(index, 1) 从数组中删除该元素。 splice() 方法会修改原始数组。
  5. 重新渲染列表: 在删除元素后,需要重新渲染列表,以反映数组的更改。我们通过调用 arrayList(myArray) 来实现这一点。
  6. idSelector 函数的安全调用: 检查idElement的长度,防止访问不存在的元素。

关键点总结

  • 事件绑定: 将事件监听器直接绑定到需要触发事件的元素上。
  • 事件对象: 使用事件对象 (event) 获取有关触发事件的元素的详细信息。
  • 数组操作: 使用 splice() 方法时,确保传递正确的索引和要删除的元素数量。
  • 重新渲染: 在修改数据后,始终重新渲染 UI 以反映更改。

注意事项

  • 唯一性: 如果列表项的内容不是唯一的,indexOf() 方法可能只会返回第一个匹配项的索引。 如果需要处理非唯一项,则需要使用更复杂的逻辑来确定要删除的正确元素。
  • 性能: 对于大型列表,频繁的重新渲染可能会影响性能。 可以考虑使用更高效的更新 UI 的方法,例如使用虚拟 DOM。

通过遵循这些步骤,您可以创建一个能够从列表中删除特定项的 J*aScript 程序。记住,理解每个步骤背后的原理是解决类似问题的关键。

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


# 文件上传  # 谷歌营销怎么推广赚钱的  # 淘客网站推广制作  # 微推广营销方案  # 锦州seo抖音搜索排名  # 手机卡的推广和营销方法  # 螺蛳粉的推广营销  # 路桥台州优化网站推广  # 宁波网站如何首页优化  # 莆田建设大型网站  # 广州网站建设分析  # 是一个  # 而不是  # 的是  # javascript  # 自己的  # 计算方法  # 如何实现  # 中特  # 列表中  # 绑定  # red  # apple  # ai  # access  # app  # html  # java 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894 】


相关推荐: 百度网盘网页入口链接分享 百度网盘官网入口网页登录  C++怎么解决数值计算中的精度问题_C++浮点数误差与数值稳定性分析  J*aScript与HTML元素交互:图片点击事件与链接处理教程  SQL聚合查询、联接与筛选:GROUP BY 子句的正确使用与常见陷阱  mysql镜像配置如何恢复数据_mysql镜像配置数据恢复详细流程  冬季去寒冷地区旅游,以下哪种做法有助于缓解冻伤  Go语言中方法接收器的选择:值类型还是指针类型?  折叠屏手机充不进电是什么问题? 特殊结构带来的维修难点  J*aScript装饰器_元编程实战  b站怎么查看视频的码率_b站视频码率查看方法  如何在CSS中使用absolute实现登录弹窗居中_transform translate结合  《全民k歌》音乐怎么下载到本地2025  KFC邀请码怎么使用领额外优惠_KFC邀请码输入方式与额外优惠代码获取方法  J*a中的值传递到底指什么_值传递模型在参数传递中的真正含义说明  lol小红书怎么|直播|?lol小红书|直播|是什么意思?  《饿了么》拼好饭点外卖教程2025  在VS Code中利用AI辅助进行代码迁移  手机自动关机是怎么回事?如何修复?手机异常关机的原因排查与修复技巧  抖音号升级成企业资质怎么弄?有什么好处?  动漫岛汉化官网网 动漫岛官方动漫汉化地址  《华夏千秋》龙女试炼功法获取方法  mysql中外键约束如何使用_mysql FOREIGN KEY操作  Win10如何彻底关闭OneDrive Win10禁用云同步功能【纯净】  如何使用 composer 和 aop-php 实现 AOP 编程?  《火影忍者:木叶高手》快速升级攻略  如何在解析前预检查XML文件的完整性? 比如检查文件大小或特定结束标签  Win10截图远程协助 Win10远程桌面截屏法【场景应用】  Pydantic 中“schema”字段命名冲突的解决方案  4399正版网页版入口高清直达链接  MacBook Pro词典使用指南  英雄联盟争者留名活动介绍  附近酒吧怎么找?  《海豚家》注销账号方法  《咸鱼之王》新版孙坚技能解析  惠普电脑BIOS界面看不懂怎么办_HP电脑BIOS功能选项解读与设置  火柴人战争网页版在线玩  从J*a应用程序中导出MySQL表数据的技术指南  如何解决Casbin日志与应用日志不统一的问题,使用casbin/psr3-bridge实现无缝集成  在J*a里什么是行为抽象_抽象行为对代码复用的提升作用  动漫岛在线动漫网 动漫岛动漫在线观看官方入口  芒果TV官网登录入口 芒果TV官方网站登录入口  《七读免费小说》开通会员方法  Win10怎么设置快速启动 Win10开启快速启动设置方法  mysql如何管理数据库账户_mysql数据库账户管理技巧  电脑“无法访问指定设备、路径或文件”怎么办?五种权限设置方法  豆包AI怎样为教育场景定制答疑逻辑_为教育场景定制豆包AI答疑逻辑方案【方案】  抖音网页版官方链接 抖音网页版官网链接入口  申通快递查询 申通物流快递单实时查询入口  《下一站江湖2》武器获取方法  《偃武》甘宁技能详解 

 2025-10-29

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.