dom练习题-全选反选、可展开子菜单、事件冒泡、二级联动、表格增删、定时器、多事件绑定

本文主要是介绍dom练习题-全选反选、可展开子菜单、事件冒泡、二级联动、表格增删、定时器、多事件绑定,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

      • checkbox全选反选
      • 可展开菜单
      • 事件冒泡
      • 二级联动菜单
      • 表格增删
      • 定时器
      • 多事件绑定

checkbox全选、反选

这里写图片描述

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>作业分解小礼包</title><style></style><script>// 全选function checkAll() {var jishis = document.getElementsByClassName("jishi")for (var i = 0; i < jishis.length; i++) {jishis[i].checked = true;// jishis[i].setAttribute("checked", "checked")}}// 取消function cancleAll() {var jishis = document.getElementsByClassName("jishi")for (var i = 0; i < jishis.length; i++) {jishis[i].checked = false;// jishis[i].removeAttribute("checked")}}// 反选function reverse() {var jishis = document.getElementsByClassName("jishi")for (var i = 0; i < jishis.length; i++) {jishis[i].checked=!jishis[i].checked;// if (jishis[i].checked == true) {////     jishis[i].checked = false// } else if (jishis[i].checked == false) {//     jishis[i].checked = true// }}}</script>
</head>
<body>
<label for="i1">技师1号</label>
<input class="jishi" id="i1" type="checkbox" checked="checked"><label for="i2">技师2号</label>
<input class="jishi" id="i2" type="checkbox"><input type="button" value="全选" onclick="checkAll();">
<input type="button" value="反选" onclick="reverse();">
<input type="button" value="取消" onclick="cancleAll();">
</body>
</html>

或者利用如下结合使用

 // jishis[i].setAttribute("checked", "checked")// jishis[i].removeAttribute("checked")

可展开菜单

这里写图片描述

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>左侧菜单示例</title><style>.left {position: fixed;left: 0;top: 0;width: 20%;background-color: darkgrey;height: 100%;}.right {width: 80%;}.title {text-align: center;padding: 10px 15px;border-bottom: 1px solid red;}.content {background-color: #336699;}.content > div {padding: 10px;color: white;border-bottom: 1px solid black;}.hide {display: none;}</style><script>// 定义一个函数function show(ths) {// 隐藏所有的.content标签     --> classList.add("hide")// 1. 找标签(所有.content标签 )var contentEles = document.getElementsByClassName("content");// 节点对象.属性// 遍历上面的标签数组for (var i=0;i<contentEles.length;i++){contentEles[i].classList.add("hide");}// 如何让函数知道我点的哪个菜单(传参数)
//            console.log(ths);// 显示我下面的.content标签 --> classList.remove("hide")// 2.找这个标签下面的content标签var nextEle = ths.nextElementSibling;// 2. 显示这个content标签nextEle.classList.toggle("hide");console.log(nextEle);}</script>
</head>
<body><div class="left"><div class="item"><div class="title" onclick="show(this);">菜单一</div><div class="content hide"><div>111</div><div>222</div><div>333</div></div></div><div class="item"><div  class="title" onclick="show(this);">菜单二</div><div class="content hide"><div>111</div><div>222</div><div>333</div></div></div><div class="item"><div  class="title" onclick="show(this);">菜单三</div><div class="content hide"><div>111</div><div>222</div><div>333</div></div></div></div>
<div class="right"></div>
</body>
</html>

事件冒泡

透明模糊弹框~

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>事件绑定示例</title>
</head>
<body><ul id="i1"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li>
</ul><script>// 传统写法
//    var liEles = document.getElementsByTagName("li");
//    for (var i=0;i<liEles.length;i++) {
//        liEles[i].onclick=function () {
//            // this 哪个标签触发的这个事件,this就指的谁哪个标签
//            alert(this.innerText);
//        }
//    }// 更好的方式target //事件属性可返回事件的目标节点(触发该事件的节点),如生成事件的元素、文档或窗口。var ulEle = document.getElementById("i1");ulEle.onclick=function (e) {  // 把事件本身当成参数传进来// event.target  // 点击的目标是谁console.log(e.target);var targetEle = e.target;alert(targetEle.innerText);}
</script>
</body>
</html>

二级联动菜单

2级联动~

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>select联动</title></head>
<body><select name="" id="s1" onchange="loadData();"><option value="">请选择省份</option></select><select name="" id="s2"><option value="">请先选择省份</option>
</select><script>var s1Ele = document.getElementById("s1");var data = {"河北": ["石家庄", "保定", "邯郸"], "湖南": ["长沙", "岳阳", "张家界"], "四川": ["成都", "绵阳", "攀枝花"]}// 把data里面的key都拿出来,生成option标签, 添加到s1这个select// 1.var str = "";for (var key in data) {// 2.var s = "<option>" + key + "</option>";console.log(s);str += s;}console.log(str);// 找到s1 select标签s1Ele.innerHTML=str;function loadData() {var s2Ele = document.getElementById("s2");s2Ele.options.length=0;  // 清空select下面的option// 自己用removeChild()练习一下// 把data里面的key都拿出来,生成option标签, 添加到s1这个selectvar indexValue= s1Ele.selectedIndex;var optionELes = s1Ele.options;var key = optionELes[indexValue].innerText;var data2 = data[key];for (var i=0; i<data2.length;i++) {var optionEle = document.createElement("option");optionEle.innerText = data2[i];s2Ele.appendChild(optionEle);}}</script>
</body>
</html>

表格增删

这里写图片描述

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>作业分解大礼包</title><style>.cover {position: fixed;top: 0;right: 0;bottom: 0;left: 0;background-color: rgba(0, 0, 0, 0.3);z-index: 999;}.modal {position: fixed;top: 50%;left: 50%;width: 600px;height: 400px;margin-left: -300px;margin-top: -200px;z-index: 1000;background-color: white;}.hide {display: none;}</style>
</head>
<body><input type="button" id="b1" value="添加"><table border="1" id="t1"><thead><tr><th>#</th><th>姓名</th><th>爱好</th><th>操作</th></tr></thead><tbody><tr><td>1</td><td>小王</td><td>写代码</td><td><input type="button" value="编辑"><input class="delete" type="button" value="删除"></td></tr><tr><td>2</td><td>小李</td><td>游泳</td><td><input type="button" value="编辑"><input class="delete" type="button" value="删除"></td></tr><tr><td>3</td><td>小张</td><td>健身</td><td><input type="button" value="编辑"><input class="delete" type="button" value="删除"></td></tr></tbody>
</table><div class="cover hide c1"></div>
<div class="modal hide c1"><p>姓名<input type="text" id="modal-name"></p><p>爱好<input type="text" id="modal-hobby"></p><input type="button" value="提交" id="modal-submit"><input type="button" value="取消" id="modal-cancel">
</div><script>// 显示模态框function showModal() {// 找到那两个divvar c1Eles = document.getElementsByClassName("c1");for (var i=0;i<c1Eles.length;i++) {c1Eles[i].classList.remove("hide");}}// 隐藏模态框function hideModal() {// 找到那两个divvar c1Eles = document.getElementsByClassName("c1");for (var i=0;i<c1Eles.length;i++) {c1Eles[i].classList.add("hide");}}// 找到添加按钮绑定事件var b1Ele = document.getElementById("b1");b1Ele.onclick=function () {showModal();};// 找到取消按钮var cancelEle = document.getElementById("modal-cancel");cancelEle.onclick=function () {//  点击取消按钮要做的事儿// 添加hide classhideModal();};//  找modal中的提交按钮,绑定事件var submitEle = document.getElementById("modal-submit");submitEle.onclick=function () {// 模态框里点击提交按钮要做的事儿// 1. 取到input筐的值var nameInput = document.getElementById("modal-name");var hobbyInput = document.getElementById("modal-hobby");var name = nameInput.value;var hobby = hobbyInput.value;// 2. 创建tr标签var trEle = document.createElement("tr");// 序号var tableEle = document.getElementById("t1");var number = tableEle.getElementsByTagName("tr").length;// 拼接tr的内容trEle.innerHTML = "<td>" + number + "</td>" + "<td>" + name + "</td>" + "<td>" + hobby + "</td>" + '<td><input type="button" value="编辑"> <input class="delete" type="button" value="删除"></td>'// 3. 添加到tbody里面var tbodyEle = tableEle.getElementsByTagName("tbody")[0];tbodyEle.appendChild(trEle);// 4. 隐藏modalhideModal();};// 删除按钮绑定事件// 1. 找标签var tableEle = document.getElementById("t1");tableEle.onclick=function (event) {// 删除按钮var currentEle = event.target;if (currentEle.classList.contains("delete")) {// 执行删除操作var currentTr = currentEle.parentElement.parentElement;var tbodyEle = tableEle.getElementsByTagName("tbody")[0];tbodyEle.removeChild(currentTr);// ID重排}}
</script>
</body>
</html>

定时器

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>定时器示例</title>
</head>
<body><input type="text" id="i1"><input type="button" value="开始" onclick="start();">
<input type="button" value="结束" onclick="end();"><script>var t;   // undefinedfunction f() {var dateObj = new Date();//  获取i1标签var i1Ele = document.getElementById("i1");i1Ele.value=dateObj.toLocaleString();}// 每隔一秒就执行一次f()function start() {f();// 只创建一个定时器,有定时器的话我就不创建了if (t === undefined) {t = setInterval(f, 1000);}}// 停止计时function end() {clearInterval(t);// t现在是什么?console.log("---> ", t)t = undefined;}</script>
</body>
</html>

多事件绑定

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>绑定多个事件</title>
</head>
<body><input type="button" value="点我" id="i1"><script>function f1() {console.log(1);}function f2() {console.log(2);}var i1Ele = document.getElementById("i1");// addEventListener, 绑定多个事件,不覆盖i1Ele.addEventListener("click", f1);i1Ele.addEventListener("click", f2);</script>
</body>
</html>

这篇关于dom练习题-全选反选、可展开子菜单、事件冒泡、二级联动、表格增删、定时器、多事件绑定的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1125170

相关文章

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

Springboot如何配置Scheduler定时器

《Springboot如何配置Scheduler定时器》:本文主要介绍Springboot如何配置Scheduler定时器问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录Springboot配置Scheduler定时器1.在启动类上添加 @EnableSchedulin

基于@RequestParam注解之Spring MVC参数绑定的利器

《基于@RequestParam注解之SpringMVC参数绑定的利器》:本文主要介绍基于@RequestParam注解之SpringMVC参数绑定的利器,具有很好的参考价值,希望对大家有所帮助... 目录@RequestParam注解:Spring MVC参数绑定的利器什么是@RequestParam?@

Java利用poi实现word表格转excel

《Java利用poi实现word表格转excel》这篇文章主要为大家详细介绍了Java如何利用poi实现word表格转excel,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、每行对象类需要针对不同的表格进行对应的创建。package org.example.wordToEx

python展开嵌套列表的多种方法

《python展开嵌套列表的多种方法》本文主要介绍了python展开嵌套列表的多种方法,包括for循环、列表推导式和sum函数三种方法,具有一定的参考价值,感兴趣的可以了解一下... 目录一、嵌套列表格式二、嵌套列表展开方法(一)for循环(1)for循环+append()(2)for循环+pyPhWiFd

使用EasyExcel实现简单的Excel表格解析操作

《使用EasyExcel实现简单的Excel表格解析操作》:本文主要介绍如何使用EasyExcel完成简单的表格解析操作,同时实现了大量数据情况下数据的分次批量入库,并记录每条数据入库的状态,感兴... 目录前言固定模板及表数据格式的解析实现Excel模板内容对应的实体类实现AnalysisEventLis

使用Python实现表格字段智能去重

《使用Python实现表格字段智能去重》在数据分析和处理过程中,数据清洗是一个至关重要的步骤,其中字段去重是一个常见且关键的任务,下面我们看看如何使用Python进行表格字段智能去重吧... 目录一、引言二、数据重复问题的常见场景与影响三、python在数据清洗中的优势四、基于Python的表格字段智能去重

spring @EventListener 事件与监听的示例详解

《spring@EventListener事件与监听的示例详解》本文介绍了自定义Spring事件和监听器的方法,包括如何发布事件、监听事件以及如何处理异步事件,通过示例代码和日志,展示了事件的顺序... 目录1、自定义Application Event2、自定义监听3、测试4、源代码5、其他5.1 顺序执行

在Mysql环境下对数据进行增删改查的操作方法

《在Mysql环境下对数据进行增删改查的操作方法》本文介绍了在MySQL环境下对数据进行增删改查的基本操作,包括插入数据、修改数据、删除数据、数据查询(基本查询、连接查询、聚合函数查询、子查询)等,并... 目录一、插入数据:二、修改数据:三、删除数据:1、delete from 表名;2、truncate

如何利用Python实现给Excel表格截图

《如何利用Python实现给Excel表格截图》这篇文章主要为大家详细介绍了如何利用Python实现给Excel表格截图功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 我搜索了网络上的方案,感觉把 Excel 表格转换为 html 再用 platwright 截图是比China编程较顺