JavaScript动态列表项:如何将删除按钮置于左侧

javascript动态列表项:如何将删除按钮置于左侧

本文旨在解决在使用 JavaScript 动态创建列表项时,如何将删除按钮默认放置在列表项左侧的问题。通过修改 DOM 元素的添加顺序,并结合 CSS 样式调整,实现按钮位置的灵活控制。同时,本文还提供了完整的代码示例,帮助开发者快速理解和应用。

在使用 JavaScript 创建动态列表时,常常需要在每个列表项(

)中添加一个删除按钮。默认情况下,使用 appendChild 方法会将新元素添加到父元素的末尾,导致删除按钮出现在列表项的右侧。本文将介绍如何通过修改 JavaScript 代码,将删除按钮放置在列表项的左侧。

解决方案

核心思路在于调整 DOM 元素的添加顺序。在创建新的列表项时,先将删除按钮添加到

元素中,然后再添加文本节点。这样,按钮就会出现在文本的前面,从而实现左侧显示的效果.

代码示例

以下是修改后的 JavaScript 代码:

立即学习“Java免费学习笔记(深入)”;

var button = document.getElementById("enter")var input = document.getElementById("user");var ul = document.querySelector("ul");var li = document.querySelectorAll("li");var clearButton = document.getElementsByClassName("clearButton");function listItems() {  return input.value.length}function createListElement() {  // 创建新的 li 元素  var li = document.createElement("li");  // 将按钮添加到 li  var newButton = document.createElement("button");  newButton.innerHTML = "X";  li.appendChild(newButton);  // 然后将文本添加到 li  li.appendChild(document.createTextNode(input.value));  input.value = "";  li.addEventListener("click", function() {    li.classList.toggle("done");  });  newButton.addEventListener("click", function() {    ul.removeChild(li);  });  // 将构造好的 li 添加到 ul  ul.appendChild(li);}function addItemAfterEnter() {  if (listItems() > 0) {    createListElement();  }}function addItemAfterKeypress(event) {  if (listItems() > 0 && event.keyCode === 13) {    createListElement();  }}button.addEventListener("click", addItemAfterEnter);input.addEventListener("keypress", addItemAfterKeypress)for (var i = 0; i < li.length; i++) {  li[i].addEventListener("click", function() {    this.classList.toggle("done");  })}for (var i = 0; i < clearButton.length; i++) {  clearButton[i].addEventListener("click", function() {    this.parentNode.remove();  })}

关键在于 createListElement 函数中,先创建 newButton 并将其 appendChild 到 li,然后再添加文本节点。

HTML 结构

以下是对应的 HTML 结构:

Javascript event listener

  • lettuce
  • apples
  • oranges
  • fruits
  • candy

CSS 样式

为了使按钮和文本在视觉上更协调,可以使用 CSS 进行样式调整:

ul {  list-style-type: none;  padding: 0;  width: 15rem;}li button {  color: red;  margin-right: .5rem; /* 调整按钮与文本之间的间距 */  border-radius: 10px;  border: none;}/* 附加样式 */li:hover, li button:hover {  cursor: pointer;}.done {  text-decoration: line-through;}

margin-right 属性用于调整按钮和文本之间的间距,可以根据实际情况进行调整。

注意事项

DOM 操作性能: 频繁的 DOM 操作可能会影响性能。如果需要创建大量的列表项,可以考虑使用文档片段(DocumentFragment)来优化性能。事件委托: 为了提高性能,可以将事件监听器添加到 元素上,而不是每个 元素上。这称为事件委托。

总结

通过调整 DOM 元素的添加顺序,可以轻松地控制动态创建的列表项中删除按钮的位置。结合 CSS 样式调整,可以创建出美观且功能完善的动态列表。在实际开发中,还需要注意性能优化和代码的可维护性。

以上就是JavaScript动态列表项:如何将删除按钮置于左侧的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1585153.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月23日 01:31:03
下一篇 2025年12月23日 01:31:15

相关推荐

  • Elementor 搜索表单的深度定制与定位指南

    本教程详细介绍了如何使用 elementor 的自定义 css 功能,精确控制搜索表单的样式和布局。内容涵盖移除默认边框、轮廓和焦点(点击)样式,以及通过 css 实现表单的水平居中。通过具体的代码示例和操作步骤,帮助用户实现与网站设计风格完美融合的搜索功能。 在 Elementor 页面构建器中,…

    2025年12月23日
    000
  • CSS技巧:在独立边框表格中实现圆角行效果

    本文旨在解决在使用 `border-collapse: separate` 样式创建表格时,`border-radius` 无法直接应用于 `tr` 元素的问题。通过详细解析其原因并提供实用的css解决方案,我们将学习如何利用 `:first-child` 和 `:last-child` 伪类,将圆…

    2025年12月23日
    000
  • HTML Bootstrap 模态框(Modal)无法打开的常见问题与解决方案

    Ürün Markası Müşteri Adı Soyadı Müşteri Telefonu Verileri Kaydet <!– 必须在 标签结束前引入所有必要的 JavaScript 依赖 –><!–$(document).ready(…

    2025年12月23日
    000
  • Django静态文件加载失败问题排查与解决

    本文旨在解决Django项目中静态文件(如图片)无法正确加载的问题,详细分析了常见错误配置,并提供了经过验证的解决方案。通过修改模板文件、更新settings.py配置以及调整urls.py设置,确保静态文件能够被正确访问和显示,从而避免出现“404 Not Found”错误。 在Django项目中…

    2025年12月23日
    000
  • JavaScript与CSS实现点击切换元素样式:优化用户体验与代码可维护性

    本文将介绍如何使用javascript和css实现元素点击颜色切换的交互效果。我们将探讨避免直接操作内联样式,转而采用`classlist.toggle()`方法结合css类进行样式管理的最佳实践,从而提升代码的可维护性和扩展性。 引言:点击交互中的样式切换挑战 在网页开发中,实现交互式元素(如点赞…

    2025年12月23日
    000
  • Django Admin模板覆盖失效问题解析与解决方案

    本文深入探讨了django项目中覆盖管理后台模板(如admin/base.html)时常见的失效问题。核心解决方案围绕调整installed_apps的顺序,确保自定义应用在django.contrib.admin之前加载,或利用templates配置中的dirs优先级。文章还推荐使用admin/b…

    2025年12月23日
    000
  • SVG 元素中嵌入HTML内容的限制与替代方案

    svg的“元素不支持直接嵌套html ` `等块级内容,因为svg和html拥有不同的渲染模型。本文将深入解释这一根本限制,并探讨在svg中实现富文本效果或混合内容布局的正确方法,主要包括利用svg自身强大的文本处理能力以及在特定场景下谨慎使用`foreignobject`元素。 SVG…

    2025年12月23日
    000
  • 如何将应用CSS滤镜和遮罩的DOM元素导出为图片:挑战与解决方案

    本文探讨了将包含css `filter`和`mask-image`等高级视觉效果的dom元素保存为图片时面临的技术挑战,特别是`html2canvas`等客户端库的局限性。鉴于浏览器对这些效果的动态渲染特性,文章指出目前最可靠的解决方案是采用屏幕截图,无论是手动操作还是通过如puppeteer等无头…

    2025年12月23日
    000
  • 单页应用性能优化:通过API直接获取特定分类数据

    对于加载所有数据的单页应用(spa),用户若希望快速访问特定分类内容,直接通过浏览器开发者工具分析并调用后端api是高效的替代方案。这种方法能绕过客户端渲染,减少感知加载时间,并专注于获取所需数据,而非等待完整页面加载和过滤。 理解单页应用(SPA)的数据加载机制 许多现代网站采用单页应用(SPA)…

    2025年12月23日
    000
  • Elementor搜索表单高级定制:样式优化与精准定位

    本教程旨在指导用户如何通过自定义css精确控制elementor搜索表单的视觉样式和布局。内容涵盖去除默认边框、轮廓、背景及点击效果,并实现表单的水平居中定位。通过详细的css代码示例和应用指南,帮助用户摆脱elementor默认限制,打造符合品牌风格的个性化搜索表单。 在Elementor页面构建…

    2025年12月23日
    000
  • Django静态资源加载失败问题排查与解决方案

    本文旨在解决Django项目中静态资源(如图片)无法正确加载的问题,详细阐述了静态文件配置的关键步骤,包括`settings.py`和`urls.py`的正确设置,以及模板文件中引用静态资源的正确方式,帮助开发者快速定位并解决404错误,确保静态资源能够被成功访问。 在Django开发过程中,静态资…

    2025年12月23日
    000
  • 实现复选框按选择顺序获取值:jQuery与原生JavaScript解决方案

    本文将探讨如何通过事件监听机制,在用户选择或取消选择复选框时,动态维护一个数组,以确保复选框的值按照其被选中的先后顺序进行存储。我们将分别介绍基于jquery和原生javascript的实现方法,并提供详细的代码示例和解释,帮助开发者准确获取用户交互的顺序数据。 在Web开发中,我们经常需要获取用户…

    2025年12月23日
    100
  • 使用 Flexbox 实现子元素对齐:一份详细指南

    本文旨在帮助初学者理解和掌握如何使用 Flexbox 布局模型,解决子元素在父容器中的对齐问题。通过一个实际案例,我们将逐步演示如何利用 Flexbox 的各项属性,实现灵活且精确的元素定位,最终达到预期的页面布局效果。本文将提供详细的代码示例和解释,助你轻松掌握 Flexbox 的使用技巧。 理解…

    2025年12月23日
    000
  • JavaScript Select Option点击事件失效问题排查与解决方案

    本文旨在解决JavaScript动态创建select元素后,option点击事件无法触发的问题。我们将通过分析问题代码,找出失效原因,并提供有效的解决方案,帮助开发者正确地为select元素添加change事件监听器,实现预期的交互效果。 在JavaScript中,动态创建元素并添加后,直接为每个元…

    2025年12月23日
    000
  • Selenium中处理隐藏的下拉菜单(display: none)

    本文旨在解决Selenium自动化测试中无法与样式属性为`display: none`的下拉菜单进行交互的问题。核心解决方案是利用Selenium的`execute_script`方法,通过JavaScript动态修改元素的样式,使其变为可见状态,从而允许Selenium的`Select`类或其他交…

    2025年12月23日
    000
  • CSS调整:如何使单选框和复选框左对齐并实现页面全屏滚动

    本文旨在解决如何在使用CSS居中表单元素的同时,将单选框和复选框左对齐的问题,并提供一种实现表单占据整个页面并带有滚动条的方法。通过移除不必要的居中样式,并结合CSS属性调整,可以轻松实现所需的布局效果。同时,我们将探讨如何调整body的高度以实现页面全屏滚动。 解决单选框和复选框的左对齐问题 在表…

    2025年12月23日
    000
  • html函数如何实现前端路由切换 html函数History API的简单应用

    %ignore_a_1%路由可通过History API实现,利用pushState修改URL并添加历史记录,结合onpopstate监听前进后退操作,通过render函数动态更新页面内容,实现无刷新导航;需注意服务器配置fallback以支持直接访问子路由。 前端路由切换可以通过浏览器的 Hist…

    2025年12月23日
    000
  • HTML中实现WinForm风格动态多列列表布局

    本文旨在指导读者如何在html中利用css的`column-count`属性,高效实现类似winform的多列列表布局。该布局特点是内容项按垂直方向填充列,当一列填满后自动流向下一列,并能适应不同高度的内容项,实现动态且响应式的多列展示效果。通过简洁的css代码,开发者可以轻松创建出结构清晰、内容自…

    2025年12月23日
    000
  • CSS技巧:如何改变HTML文件输入框的‘未选择文件’文本颜色

    本文探讨了如何通过css来改变html文件输入框(“)中“未选择文件”文本的默认颜色。由于浏览器对原生控件的渲染限制,直接修改该文本颜色较为困难。教程提供了一个简洁有效的css解决方案,即利用`color: transparent;`属性将原生文本设为透明,从而实现视觉上的隐藏,为进一步…

    2025年12月23日
    000
  • 自定义文章类型:在子主题中定制 single.php

    本文档旨在指导开发者如何在 WordPress 子主题中自定义自定义文章类型的单页(single.php)布局。通过创建新的模板文件并将其与特定的自定义文章类型关联,可以实现对文章展示的精细控制,从而避免直接修改父主题文件带来的风险。 步骤详解 创建新的模板文件: 首先,在你的子主题目录下创建一个新…

    2025年12月23日
    000

发表回复

登录后才能评论
关注微信