js中DOM三级列表(代码分享)

JS中DOM三级列表(代码分享)

在HTML中,可以通过嵌套使用<ul><li>标签来创建无序列表,也可以嵌套使用<ol><li>标签来创建有序列表。除此之外,还可以通过嵌套使用<dl><dt><dd>标签来创建说明列表。在JavaScript中,可以使用DOM操作来创建、修改和删除这些列表。

创建三级列表

首先,我们需要创建一个包含三级列表的HTML结构。代码如下:

<ul id="list">
  <li>
    <span>第一项</span>
    <ul>
      <li>
        <span>子项1</span>
        <ul>
          <li><span>孙子项1</span></li>
          <li><span>孙子项2</span></li>
        </ul>
      </li>
      <li><span>子项2</span></li>
    </ul>
  </li>
  <li><span>第二项</span></li>
  <li><span>第三项</span></li>
</ul>

该HTML结构包含一个id为list的无序列表,其中嵌套使用了三层<ul><li>标签。为了让列表更加清晰,我们使用<span>标签来包裹列表项的文本内容。

接下来,我们需要在JavaScript中获取该列表元素,并添加事件监听器,代码如下:

var list = document.getElementById("list");
list.addEventListener("click", handleClick);

在上面的代码中,我们使用document.getElementById方法获取id为list的元素,并使用addEventListener方法为它添加了一个click事件监听器,该监听器的回调函数是handleClick

现在,我们需要实现handleClick函数。该函数的作用是根据点击的元素类型,判断点击的是列表项还是列表项中的子元素,并在控制台输出相应的提示信息。代码如下:

function handleClick(event) {
  var target = event.target;
  if (target.tagName === "LI") {
    console.log("点击了列表项:" + target.firstElementChild.innerHTML);
  } else if (target.tagName === "SPAN") {
    console.log("点击了子元素:" + target.innerHTML);
  }
}

在上面的代码中,我们首先获取触发事件的元素,并使用tagName属性来判断该元素的标签类型。如果元素是一个<li>标签,说明点击的是列表项,我们可以通过firstElementChild属性获取该列表项的第一个子元素<span>,并使用innerHTML属性获取该元素的文本内容。如果元素是一个<span>标签,说明点击的是列表项中的子元素,我们可以直接使用innerHTML属性获取该元素的文本内容,并添加相应的提示信息到控制台中。

修改列表项

除了添加事件监听器外,我们还可以使用DOM操作来修改列表项。例如,我们可以为列表项添加一些样式,使其在被选中时呈现明显的高亮效果。代码如下:

function handleClick(event) {
  var target = event.target;
  if (target.tagName === "LI") {
    console.log("点击了列表项:" + target.firstElementChild.innerHTML);
    target.classList.add("active");
  } else if (target.tagName === "SPAN") {
    console.log("点击了子元素:" + target.innerHTML);
    target.parentNode.classList.add("active");
  }
}

在上面的代码中,我们使用了classList属性来为选中的列表项添加了一个名为active的类,以便对其进行样式设置。如果点击的是子元素,我们还需要使用该元素的parentNode属性获取其父节点(即列表项),然后对其进行样式设置。

总结

通过以上的示例,我们可以看到如何在JavaScript中使用DOM操作来创建、修改和删除三级列表。其中,添加事件监听器以及样式设置是比较常见的DOM操作。在实际应用中,我们还需要了解更多的DOM操作方法以及浏览器的兼容性问题,以便开发出更加高效和稳定的网页。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js中DOM三级列表(代码分享) - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • JavaScript 基础问答 四

    JavaScript 基础问答 四攻略 JavaScript 基础问答 四主要涉及到数组的相关知识,以下是本题的完整攻略。 1. 如何将一个多维数组进行扁平化处理? 扁平化处理是将多维数组变成一维数组的过程。可以通过循环递归的方式来实现。 function flatten(arr) { var resultArr = []; for (var i = 0; …

    JavaScript 2023年5月18日
    00
  • JS之Date对象和获取系统当前时间详解

    当我们开发网站时,经常需要操作时间。JavaScript中提供了Date对象,可以方便地进行时间相关的操作。 Date对象 Date对象可以获取当前时间,也可以设置指定时间,提供了很多方法操作时间。 获取当前时间 获取当前时间可以使用Date对象的构造函数不传递任何参数,也可以使用now方法。 // 使用构造函数获取当前时间 let now1 = new D…

    JavaScript 2023年5月27日
    00
  • 自己动手封装的 ajax

    请允许我为您详细讲解一下如何自己动手封装的 Ajax。 概述 Ajax 是一种使用异步技术实现网页无需刷新就能与服务器进行数据交互的技术。在开发实际项目中,我们可能会频繁使用到 Ajax 技术。而现成的库和框架往往过于笨重,我们可以自己动手封装一个轻量级的 Ajax。 原理 封装 Ajax 的原理也很简单,实际上就是利用原生的 XMLHttpRequest …

    JavaScript 2023年6月11日
    00
  • javascript 冒号 使用说明

    下面是关于 JavaScript 冒号的使用说明: 什么是冒号 在 JavaScript 中,冒号(:)在对象字面量中用来分隔属性名和属性值,在 ES6 中则有更多的使用方式。下面我们来逐一讲解。 对象字面量 在对象字面量中,冒号用来分隔属性名和属性值。举个例子: const person = { name: ‘Tom’, age: 18 } 在这个例子中,…

    JavaScript 2023年6月11日
    00
  • js自定义input文件上传样式

    下面是JS自定义input文件上传样式的完整攻略。我们可以通过JS代码来自定义input文件上传样式,从而提升用户体验。 创建文件上传按钮 我们可以通过HTML代码来创建文件上传按钮,如下所示: <input type="file" id="upload-file"> 隐藏默认文件上传按钮 当我们创建了文件…

    JavaScript 2023年6月10日
    00
  • 使用JavaScript实现ajax的实例代码

    使用JavaScript实现ajax的攻略分为以下几个步骤: 1. 准备工作 使用ajax需要使用XMLHttpRequest(XHR)对象,该对象是JavaScript中的原生对象,所以无需下载或引入其他插件。在使用前,需要实例化一个XHR对象,方法如下: var xhr = new XMLHttpRequest(); 2. 发送请求 XHR对象通过ope…

    JavaScript 2023年6月11日
    00
  • 编写高性能JavaScript(译)

    下面就为您详细讲解“编写高性能JavaScript(译)”的完整攻略。 一、前言 JavaScript 是当前最流行的编程语言之一,但它的性能往往会成为我们的瓶颈。而编写高性能的 JavaScript 可以节省服务器资源、提高用户体验。本攻略将为大家介绍如何编写高性能 JavaScript 的方法和技巧。 二、准备工作 编写高性能 JavaScript 的前…

    JavaScript 2023年5月18日
    00
  • javascript实现类似java中getClass()得到对象类名的方法

    要实现类似Java中getClass()方法的对象类名获取方式,可以使用JavaScript中的Object.prototype.toString方法。这个方法可以返回一个表示当前对象的字符串,其中包含了对象的类型信息。 下面是实现该方法的详细步骤: 定义一个全局函数,比如叫做getClass,接收一个对象作为参数。 function getClass(ob…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部