新闻中心

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

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

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

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

问题分析

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

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

正确的实现方式

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

HTML 结构:

第三波网上书店源码 第三波网上书店源码

网络购物已经随着Ineternet的飞速发展而得到越来越多应用。为了提高交易效率,节省人们的宝贵时间,我们开发了这套稳定可靠、操作方便、安全有效的时尚购书系统,它主要分为前台和后台两大模块:(前台)使用了站点地图,显示您所在网站的位置。首页图书列表显示,用户登陆,用户注 册,列出图书详细,购物车功能,以及结算等。(后台)图书、用户的添加,删除,修改等操作,查看客户的订单及修改 该项目采用三层结构开

第三波网上书店源码 0 查看详情 第三波网上书店源码
<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 从列表中删除特定项的详细内容,更多请关注其它相关文章!


# java  # 是一个  # 而不是  # 的是  # 它比  # 自己的  # 怎么做  # 网上  # 如何使用  # 绑定  # red  # apple  # ai  # access  # app  # html  # javascript  # 列表中  # 酒店微博营销推广策划书  # 高埗网站推广优化  # 网上书城网站建设总结  # 宝鸡网站建设最新报价  # seo贵在坚持  # 网站建设上传视频教程  # 吉林信息化网站优化检修  # 网站推广怎么推广好做  # 池州网站页面优化有用吗  # 西城区网站推广 


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


相关推荐: 绝地鸭卫平a核爆刀流玩法攻略  sublime如何处理大型CSV文件的列对齐_sublime高级表格编辑插件指南  妖精漫画网页版登录入口免费_妖精漫画官网主页直接阅读漫画  在J*a中如何开发在线活动报名与管理系统_活动报名管理项目实战解析  如何为你的Composer包编写自动化测试_集成PHPUnit到Composer的scripts工作流  夸克浏览器网页版最新地址 夸克浏览器官方入口合集  如何在 Excel Online 和 Google 表格中更改日期格式  2025年云电脑操作系统体验 | 无需本地硬件,随时随地使用高性能PC  解决Bootstrap卡片顶部边距导致背景图下移的问题  双系统安装时,如何设置默认启动系统? msconfig命令了解一下!  红果短剧网页版官网入口 官方最新网址发布  Flexbox布局实践:实现粘性导航栏与底部固定页脚  妖精动漫免费平台 妖精动漫官网资源观看网址  如何在网页中实现特定地点的随机图片展示  如何在Promise链中有效终止错误处理后的执行  海棠电脑版入口_通过电脑访问海棠官网阅读  凉拌黄瓜怎么拌更入味 凉拌黄瓜简单家常做法  谷歌浏览器最新官方入口链接 谷歌浏览器网页版官网导航  excel怎么制作工资条 excel快速生成工资条的方法  LINUX的I/O重定向是什么_深入理解LINUX中 >、>> 与 < 的区别  蛙漫2台版漫画地址 Manwa2正版网页版链接  优化HTML表单样式:解决输入框焦点跳动与元素间距问题  QQ邮箱在线使用入口 QQ邮箱个人账号网页版登录  支付宝解绑银行卡步骤_支付宝如何解除绑定银行卡  QQ邮箱电脑版登录入口_QQ邮箱官方网站登录平台  怎样更改Windows系统的默认安装路径_避免C盘爆满的终极设置【技巧】  CSS Box Model与弹性按钮:维持布局稳定的动画实践  在J*a中如何捕获IndexOutOfBoundsException_索引越界异常防护方法说明  fishbowl官网免费版 fishbowl养鱼网站入口  QQ邮箱网页版入口 QQ邮箱官方邮箱登录通道  css滚动动画效果怎么实现_使用Animate.css滚动触发动画类  狙击外星人小游戏开始_狙击外星人小游戏立即开始  深入理解Google Cloud Datastore查询:祖先路径与数据一致性  优化LangChain文档加载与ChromaDB集成:解决多文档处理与分块问题  age动漫网站入口 age动漫官网直接访问入口  Go语言中的*string:深入理解字符串指针  J*aScript中赋值与自增运算符的复杂交互与执行机制  服务端验证_j*ascript输入检查  J*aScript中高效清空DOM列表元素:解决for循环中断与任务管理问题  微信客户端如何收红包_微信客户端接收红包使用教程  百度浏览器字体显示异常偏小_百度浏览器字体渲染修复方案  Golang如何使用new_Go new分配内存机制讲解  随机参数递归函数的基准调用次数与时间复杂度探究  Golang如何优化CPU绑定任务分配策略_Golang CPU任务分配优化实践  Windows10怎么开启夜间模式 Windows10系统设置调整色温与亮度缓解夜间用眼疲劳【教程】  Bilibili动漫最新防封地址发布-Bilibili动漫2025年最稳正版入口推荐  微信网页版官方入口直达 微信网页版网页版登录使用方法  qq邮箱发邮件给国外发不出去_QQ邮箱国际邮件发送失败原因与解决  在J*a中如何使用BigDecimal进行高精度计算_BigDecimal类应用指南  J*aScript Promise链中如何正确终止后续.then执行并处理错误 

搜索