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实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

使用C#删除Excel表格中的重复行数据的代码详解

《使用C#删除Excel表格中的重复行数据的代码详解》重复行是指在Excel表格中完全相同的多行数据,删除这些重复行至关重要,因为它们不仅会干扰数据分析,还可能导致错误的决策和结论,所以本文给大家介绍... 目录简介使用工具C# 删除Excel工作表中的重复行语法工作原理实现代码C# 删除指定Excel单元

使用Python实现网页表格转换为markdown

《使用Python实现网页表格转换为markdown》在日常工作中,我们经常需要从网页上复制表格数据,并将其转换成Markdown格式,本文将使用Python编写一个网页表格转Markdown工具,需... 在日常工作中,我们经常需要从网页上复制表格数据,并将其转换成Markdown格式,以便在文档、邮件或

Python实现pdf电子发票信息提取到excel表格

《Python实现pdf电子发票信息提取到excel表格》这篇文章主要为大家详细介绍了如何使用Python实现pdf电子发票信息提取并保存到excel表格,文中的示例代码讲解详细,感兴趣的小伙伴可以跟... 目录应用场景详细代码步骤总结优化应用场景电子发票信息提取系统主要应用于以下场景:企业财务部门:需

MybatisX快速生成增删改查的方法示例

《MybatisX快速生成增删改查的方法示例》MybatisX是基于IDEA的MyBatis/MyBatis-Plus开发插件,本文主要介绍了MybatisX快速生成增删改查的方法示例,文中通过示例代... 目录1 安装2 基本功能2.1 XML跳转2.2 代码生成2.2.1 生成.xml中的sql语句头2

Python实现获取带合并单元格的表格数据

《Python实现获取带合并单元格的表格数据》由于在日常运维中经常出现一些合并单元格的表格,如果要获取数据比较麻烦,所以本文我们就来聊聊如何使用Python实现获取带合并单元格的表格数据吧... 由于在日常运维中经常出现一些合并单元格的表格,如果要获取数据比较麻烦,现将将封装成类,并通过调用list_exc

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

springboot使用Scheduling实现动态增删启停定时任务教程

《springboot使用Scheduling实现动态增删启停定时任务教程》:本文主要介绍springboot使用Scheduling实现动态增删启停定时任务教程,具有很好的参考价值,希望对大家有... 目录1、配置定时任务需要的线程池2、创建ScheduledFuture的包装类3、注册定时任务,增加、删

python获取网页表格的多种方法汇总

《python获取网页表格的多种方法汇总》我们在网页上看到很多的表格,如果要获取里面的数据或者转化成其他格式,就需要将表格获取下来并进行整理,在Python中,获取网页表格的方法有多种,下面就跟随小编... 目录1. 使用Pandas的read_html2. 使用BeautifulSoup和pandas3.