JavaScript高级Ⅱ(全面版)

接上文 JavaScript高级Ⅰ JavaScript高级Ⅰ(自认为很全面版)-CSDN博客

目录

第2章 DOM编程

2.1 DOM编程概述

2.1.4 案例演示(商品全选)

2.1.5 dom操作内容

代码演示:

运行效果:

2.1.6 dom操作属性

代码演示:

运行效果:

2.1.7 dom操作样式

代码演示:

运行效果:

2.1.8 dom操作元素

代码演示:

运行效果:

2.1.9 案例演示(省市级联)


第2章 DOM编程

2.1 DOM编程概述

2.1.4 案例演示(商品全选)

实现 商品全选/反选功能

<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><title>16-案例-商品全选</title>
</head>
<body><button id="btn1">1. 全选</button>
<button id="btn2">2. 反选</button>
<br/>
<input type="checkbox">电脑<input type="checkbox">手机<input type="checkbox">汽车<input type="checkbox">别墅<input type="checkbox" checked="checked">笔记本
<script >let allBox =document.querySelectorAll('input[type="checkbox"]');//获取所有复选框let btn1 = document.querySelector('#btn1');//全选按钮let btn2 = document.querySelector('#btn2');//反选按钮// 1. 全选btn1.onclick = function () {for(let b of allBox){b.checked = true;//全部选中}}// 2. 反选btn2.onclick = function () {for(let b of allBox){b.checked = !b.checked;//全部反选}}
</script>
</body>
</html>

运行效果:

2.1.5 dom操作内容

dom操作内容

1. 向body中追加html内容 document.write(html内容)

2. 获取或修改元素的纯文本内容 element.innerText 获取元素的纯文本内容

3. 获取或修改元素的html内容 element.innerHTML 获取元素的html内容

4. 获取或修改包含元素自身的html内容 element..outerHTML 获取包含元素自身的html内容

小总结:

element.innerText = 普通文本

element.innerHTML = html内容

区别

innerHTML 会被当做html解析渲染

代码演示:
<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><title>09-dom操作内容</title>
</head>
<body><div id="d1"><div id="d2">d2的纯文本内容<p id="p1">p1的纯文本内容</p></div><p id="p2">p2的纯文本内容</p>
</div><script >// 1. 向body中追加html内容document.write("<p style='color:red;'>向body中追加html内容</p>");// 2. 获取或修改元素的纯文本内容let p2 = document.querySelector("#p2");console.log(p2.innerText);;//获取元素的纯文本内容let d2 = document.querySelector("#d2");console.log(d2.innerText);;//获取元素的纯文本内容p2.innerText = "修改之后的p2的纯文本内容";// 3. 获取或修改元素的html内容console.log(d2.innerHTML);//获取元素的html内容d2.innerHTML = "<p style='color:blue;'>修改后的d2的html内容</p>"// 4. 获取或修改包含元素自身的html内容console.log(d2.outerHTML);//获取包含元素自身的html内容
</script></body>
</html>
运行效果:

2.1.6 dom操作属性

dom操作属性

1. 获取文本框,单选框或复选框的选中状态 语法: element.attribute 获取或修改元素的原生属性值

2. 给元素设置自定义属性 语法: element.setAttribute(属性名,属性值) 设置属性值(原生和自定义)

3. 获取元素的自定义属性值 语法: element.getAttribute(属性名) 获取属性值(原生和自定义)

4. 移除元素的自定义属性 语法: element.removeAttribute(属性名) 移除元素的属性(原生和自定义)

5. 获取元素的属性集合(了解) 语法: element.attributes 获取元素的所有属性集合

小扩展:

w3c组织规定了每一标签所拥有的属性,这些w3c定义好的属性被称作标签的原生属性.

在html中允许开发者给标签添加额外的属性,这些自定义属性用来给标签添加额外的特性.

w3c约定开发者添加的自定义属性 以 data- 为前缀.

小结(重要):

获取或修改表单中 单选框,复选框 的选中状态时

使用 element.checked 得到 true或false

(不建议)使用 element.getAttribute(属性名) 得到的是 checked 或者 null

代码演示:
<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><title>10-dom操作属性</title>
</head>
<body><form action="#" method="get">姓名 <input type="text" name="userName" value="张三"/> <br/>密码 <input type="password" name="userPass" > <br/>生日 <input type="date" name="userBirth"><br/>性别 <input type="radio" name="gender" value="男" checked="checked">男&emsp;<input type="radio" name="gender" value="女"/>女<br/>爱好 <input type="checkbox" name="hobby" value="1">抽烟<input type="checkbox" name="hobby" value="2">喝酒<input type="checkbox" name="hobby" value="3">烫头<br/>头像 <input type="file" name="userPic"><br/>学历<select name="userEdu" ><option value="0">请选择</option><option value="1">入门</option><option value="2">精通</option><option value="3">放弃</option></select><br/>简介<textarea name="userIntro"  cols="30" rows="10">默认值</textarea><br/><input type="reset" value="清空按钮"/><input type="submit" value="提交按钮"/><br/><input type="button" value="普通按钮"><button>专业按钮</button><button>&times;</button></form>
<script >// 1. 获取文本框,单选框或复选框的选中状态let userName = document.querySelector('input[type="text"]');//获取元素console.log(userName.value);//获取value属性的值userName.value = "李四";//设置value属性的值let gender = document.querySelector('input[name="gender"]');//获取元素console.log(gender.checked);//获取单选框的选中状态document.querySelector('input[value="女"]').checked=true;//设置女被选中console.log(document.querySelector('input[value="女"]').getAttribute("checked"));//不建议使用// 2. 给元素设置自定义属性userName.setAttribute("data-msg","姓名自定义数据");//设置自定义属性// 3. 获取元素的自定义属性值console.log(userName.getAttribute("data-msg"));//获取属性值// 4. 移除元素的自定义属性userName.removeAttribute("data-msg");//移除元素的属性// 5. 获取元素的属性数组(集合)let allAttri = userName.attributes;//获取元素的属性集合console.log(allAttri);for(let a of allAttri){console.log(a)}</script>
</body>
</html>
运行效果:

2.1.7 dom操作样式

dom操作样式

1. 设置一个css样式

        语法: element.style.样式属性名 获取或设置一个css样式

        属性名含有短杠-时要转为驼峰命名 例如 element.style.backgroundColor

2. 批量设置css样式

        语法: element.style.cssText 获取或设置style属性的文本值

3. 通过class设置样式

        语法: element.className 获取或设置class属性的文本值

4. 切换class样式

        语法: element.classList es6特别提供的操作元素class的接口         element.classList常用方法有四个:

                add() 添加样式

                remove() 移除样式

                contains() 判断是否包含某个样式

                toggle() 切换样式,有就移除,没有就添加

代码演示:
<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><title>11-dom操作样式</title>
</head>
<body><style>#p1{ background-color: red;}.myp{color:gold}.myppp{background-color: lightgray;}
</style>
<p id="p1">1. 设置一个css样式</p>
<p id="p2" >2. 批量设置css样式</p>
<p id="p3" class="myppp">3. 通过class设置样式</p>
<p id="p4">4. 切换class样式</p><script >// 1. 设置一个css样式let p1 = document.querySelector("#p1");//获取元素p1.style.backgroundColor = "blue";//设置背景颜色p1.style.color = "white";//设置字体颜色// 2. 批量设置css样式let p2 = document.querySelector("#p2");//获取元素p2.style.cssText = "font-family: '楷体';border: 1px solid green;border-radius: 5px;";//批量设置样式// 3. 通过class设置样式let p3 = document.querySelector("#p3");//获取元素p3.className = "myp myppp";//设置class值// 4. 切换class样式let p4 = document.querySelector("#p4");//获取元素let classList = p4.classList;//获取class值集合classList.add("myp");//添加样式classList.add("myppp");//添加样式console.log(classList.contains("myppp"));//判断含有样式classList.remove("myppp");//移除样式classList.toggle("myp");//切换样式</script>
</body>
</html>
运行效果:

2.1.8 dom操作元素

dom操作元素
    1. 前面添加抽烟
        document.createElement(标签名称) 创建标签
        parentNode.insertBefore(newNode,refNode) 把元素newNode 插入到 元素parentNode 中的 refNode之前
    2. 后面添加烫头
        parentNode.appendChild(newNode) 把元素newNode追加到元素parentNode中的最后
    3. 最后添加撩妹
        element.cloneNode() 克隆元素,一般克隆完修改不同就可以,比创建元素效率高

代码演示:
<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><title>12-dom操作元素</title>
</head>
<body><div id="md"><input id="hip" type="checkbox" name="hobby" value="喝酒"><span id="hspan">喝酒</span>
</div><script >let md = document.querySelector("#md");let hip = document.querySelector("#hip");// 1. ^^^前面添加抽烟//创建input标签,把新标签追加到喝酒之前let ip1 = document.createElement("input");//创建标签ip1.setAttribute("id","cip");ip1.setAttribute("type","checkbox");ip1.setAttribute("name","hobby");ip1.setAttribute("value","抽烟");console.log(ip1);let cspan = document.createElement("span");//创建标签cspan.innerText = "抽烟";//设置文本内容md.insertBefore(cspan,hip);//把cspan插入到md中的hip之前md.insertBefore(ip1,cspan);//把ip1插入到md中的cspan之前// 2. ^^^后面添加烫头//创建input标签,把新标签追加到喝酒之后let ip2 = document.createElement("input");//创建标签ip2.setAttribute("id","tip");ip2.setAttribute("type","checkbox");ip2.setAttribute("name","hobby");ip2.setAttribute("value","烫头");console.log(ip2);let tspan = document.createElement("span");//创建标签tspan.innerText = "烫头";//设置文本内容md.appendChild(ip2);//在md中最后添加ip2md.appendChild(tspan);//在md中最后添加tspan// 3. ^^^点击按钮添加王者let ip3 = ip2.cloneNode();//克隆元素console.log(ip3);ip3.setAttribute("id","lip");ip3.setAttribute("value","撩妹");let lspan = tspan.cloneNode();//克隆元素lspan.innerText = "撩妹";//设置文本内容md.appendChild(ip3);//在md中最后添加ip2md.appendChild(lspan);//在md中最后添加tspan</script>
</body>
</html>
运行效果:

2.1.9 案例演示(省市级联)

<!DOCTYPE html>
<html><head><meta charset="utf-8" /><title>省市级联</title><style type="text/css">.regist_bg {width: 100%;height: 600px;padding-top: 40px;background-image: url(../img/bg.jpg);}.regist {border: 7px inset #ccc;width: 600px;padding: 40px 0;padding-left: 80px;background-color: #fff;margin-left: 25%;border-radius: 10px;}input[type="submit"] {background-color: aliceblue;width: 100px;height: 35px;color: red;cursor: pointer;border-radius: 5px;}</style></head><body><div class="regist_bg"><div class="regist"><form action="#"><table width="600" height="350px"><tr><td colspan="3"><font color="#3164af">会员注册</font> USER REGISTER</td></tr><tr><td align="right">用户名</td><td colspan="2"><input id="loginnameId" type="text" name="loginname" size="60" /> </td></tr><tr><td align="right">密码</td><td colspan="2"><input id="loginpwdId" type="password" name="loginpwd" size="60" /> </td></tr><tr><td align="right">确认密码</td><td colspan="2"><input id="reloginpwdId" type="password" name="reloginpwd" size="60" /> </td></tr><tr><td align="right">Email</td><td colspan="2"><input id="emailId" type="text" name="email" size="60" /> </td></tr><tr><td align="right">姓名</td><td colspan="2"><input name="text" name="username" size="60" /> </td></tr><tr><td align="right">性别</td><td colspan="2"><input type="radio" name="gender" value="男" checked="checked" />男<input type="radio" name="gender" value="女" />女</td></tr><tr><td align="right">电话号码</td><td colspan="2"><input type="text" name="phone" size="60" /> </td></tr><tr><td align="right">所在地</td><td colspan="3">								<select id="provinceId" style="width:150px"><option value="">----请-选-择-省----</option></select><select id="cityId" style="width:150px"><option value="">----请-选-择-市----</option></select></td></tr><tr><td width="80" align="right">验证码</td><td width="100"><input type="text" name="verifyCode" /> </td><td><img src="../img/checkMa.png" /> </td></tr><tr><td></td><td colspan="2"><input type="submit" value="注册" /></td></tr></table></form></div></div>
<!--
省市级联1. 页面加载完成后自动装载省数据2. 当选中省时,装载该省的市数据
--><script type="text/javascript">//准备省市数据let provinceData = ["北京","河北","辽宁"];let cityData = {"北京":["顺义区","昌平区","朝阳区"],"河北":["保定","石家庄","廊坊"],"辽宁":["沈阳","铁岭","抚顺"]};// 1. 页面加载完成后自动装载省数据let province = document.querySelector("#provinceId");//获取省window.onload = function(){for(let prov of provinceData){let option = document.createElement("option");//创建option标签option.value = prov;option.innerText = prov;province.appendChild(option);//给省追加选项}}// 2. 当选中省时,装载该省的市数据let city = document.querySelector("#cityId");//获取市province.onchange = function(){let provinceStr = this.value;console.log(provinceStr);//当前选中的省let currentCityData = cityData[provinceStr];//当前的市city.innerHTML = '<option value="">----请-选-择-市----</option>';//初始化市for(let cit of currentCityData){let option = document.createElement("option");//创建option标签option.value = cit;option.innerText = cit;city.appendChild(option);//给省追加选项}}</script></body>
</html>

运行效果:

更多内容敬候 JavaScript高级Ⅲ

欢迎大家指点评论~ 点赞+关注⭐⭐⭐

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/731588.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大模型时代下的自动驾驶研发测试工具链-SimCycle

前言&#xff1a; 最近OpenAI公司的新产品Sora的发布&#xff0c;正式掀起了AI在视频创作相关行业的革新浪潮&#xff0c;AI不再仅限于文本、语音和图像&#xff0c;而直接可以完成视频的生成&#xff0c;这是AI发展历程中的又一座重要的里程碑。AI正在不断席卷着过去与我们息…

STM32 学习10 PWM输出

STM32 学习10 PWM输出 一、PWM简介1. PWM的概念2. PWM的工作原理3. PWM 常用的应用场景 二、一些概念1. 频率2. 占空比 三、STM32F1 PWM介绍1. 定时器与寄存器&#xff08;1&#xff09;**自动重装载寄存器&#xff08;ARR&#xff09;**&#xff1a;&#xff08;2&#xff09;…

python基础——输入与输出【input 和 print】

&#x1f4dd;前言&#xff1a; 上一篇文章python基础——入门必备知识中讲解了一些关于python的基础知识&#xff0c;可以让我们更好的理解程序代码中内容的含义&#xff0c;不至于一头雾水。今天我就来介绍一下&#xff0c;python中两个常见的输入和输出语句 input 和 print …

产品推荐 - 基于星嵌 OMAPL138+国产FPGA的DSP+ARM+FPGA三核开发板

1 评估板简介 基于TI OMAP-L138&#xff08;定点/浮点DSP C674xARM9&#xff09; FPGA处理器的开发板&#xff1b; OMAP-L138是TI德州仪器的TMS320C6748ARM926EJ-S异构双核处理器&#xff0c;主频456MHz&#xff0c;高达3648MIPS和2746MFLOPS的运算能力&#xff1b; FPGA…

粘包与拆包

优质博文&#xff1a;IT-BLOG-CN 一、粘包出现的原因 服务端与客户端没有约定好要使用的数据结构。Socket Client实际是将数据包发送到一个缓存buffer中&#xff0c;通过buffer刷到数据链路层。因服务端接收数据包时&#xff0c;不能断定数据包1何时结束&#xff0c;就有可能出…

【操作系统概念】第11章:文件系统实现

文章目录 0.前言11.1 文件系统结构11.2 文件系统实现11.2.1 虚拟文件系统 11.3 分配方法11.3.1 连续分配11.3.2 链接分配11.3. 3 索引分配 11.5 空闲空间管理11.5.1 位图/位向量11.5.2 链表11.5.3 组 0.前言 正如第10章所述&#xff0c;文件系统提供了机制&#xff0c;以在线存…

springboot251基于springboot-vue的毕业论文管理系统

毕业论文管理系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本毕业论文管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短…

视频批量混剪剪辑,批量剪辑批量剪视频,探店带货系统,精细化顺序混剪,故事影视解说,视频处理大全,精细化顺序混剪,多场景裂变,多视频混剪

前言 工具的产生源于dy出的火山引擎的云视频混剪制作是按分钟数收费的&#xff0c;这个软件既能实现正常混剪也能避免二次收费。属于FFMPEG合成的。 欢迎大家给一些好的建议和功能&#xff0c;回复可见&#xff0c;附加了一些天卡&#xff0c;周卡&#xff0c;请大家不要一人占…

JavaSec 基础之 URLDNS 链

文章目录 URLDNS 链分析调用链复现反序列化复现 URLDNS 链分析 URLDNS是ysoserial里面就简单的一条利用链&#xff0c;但URLDNS的利用效果是只能触发一次dns请求&#xff0c;而不能去执行命令。比较适用于漏洞验证这一块&#xff0c;而且URLDNS这条利用链并不依赖于第三方的类…

练习3-softmax分类(李沐函数简要解析)与d2l.train_ch3缺失的简单解决方式

环境为:练习1的环境 网址为:https://www.bilibili.com/video/BV1K64y1Q7wu/?spm_id_from333.1007.top_right_bar_window_history.content.click 代码简要解析 导入模块 导入PyTorch 导入Torch中的nn模块 导入d2l中torch模块 并命名为d2l import torch from torch import nn…

Neo4j安装 Linux:CentOS、openEuler 适配langchain应用RAG+知识图谱开发 适配昇腾910B

目录 Neo4j下载上传至服务器后进行解压运行安装JAVA再次运行在windows端打开网页导入数据 Neo4j下载 进入Neo4j官网下载页面 向下滑动找到 Graph Database Self-Managed 选择 社区版&#xff08;COMMUNITY&#xff09; 选择 Linux / Mac Executable Neo4j 5.17.0 (tar) 单机下…

分销商城微信小程序:用户粘性增强,促进复购率提升

在数字化浪潮的推动下&#xff0c;微信小程序作为一种轻便、高效的移动应用形式&#xff0c;正成为越来越多企业开展电商业务的重要平台。而分销商城微信小程序的出现&#xff0c;更是为企业带来了前所未有的机遇。通过分销商城微信小程序&#xff0c;企业不仅能够拓宽销售渠道…

产品推荐 - 基于矽海达 SEM9363的无线数字图传编码开发板

Sihid SEM9363无线数字图传编码调制板(A版本)通过HDMI接口输入高清数字视频到Hi3516A处理器做H.264压缩编码&#xff0c;压缩后的视频信号通过FPGA实现COFDM信道调制&#xff0c;再经AD936x转换为模拟信号调制发射出去。 SEM9363板功能与技术规格 通过Micro HDMI接口输入数字视…

生活的色彩--爱摸鱼的美工(17)

题记 生活不如意事十之八九&#xff0c; 恶人成佛只需放下屠刀&#xff0c;善人想要成佛却要经理九九八十一难。而且历经磨难成佛的几率也很小&#xff0c;因为名额有限。 天地不仁以万物为刍狗&#xff01; 小美工记录生活&#xff0c;记录绘画演变过程的一天。 厨房 食…

AI探索实践12 - Typescript开发AI应用4:大模型响应数据的格式化输出

大家好&#xff0c;我是feng&#xff0c;感谢你阅读我的博文&#xff0c;如果你也关注AI应用开发&#xff0c;欢迎关注公众号和我一起​探索。如果文章对你有所启发&#xff0c;请为我点赞&#xff01; 一、重点回顾 在介绍本文之前的文章中&#xff0c;我们先来回顾一下使用L…

两天学会微服务网关Gateway-Gateway过滤器

锋哥原创的微服务网关Gateway视频教程&#xff1a; Gateway微服务网关视频教程&#xff08;无废话版&#xff09;_哔哩哔哩_bilibiliGateway微服务网关视频教程&#xff08;无废话版&#xff09;共计17条视频&#xff0c;包括&#xff1a;1_Gateway简介、2_Gateway工作原理、3…

数据结构 - 栈和队列

本篇博客将介绍栈和队列的定义以及实现。 1.栈的定义 栈是一种特殊的线性表&#xff0c;只允许在固定的一端进行插入和删除数据&#xff0c;插入数据的一端叫做栈顶&#xff0c;另一端叫做栈底。栈中的数据遵守后进先出的原则 LIFO (Last In First Out)。 插入数据的操作称为压…

如何借助私域营销在医美行业中脱颖而出?

在现今这个以貌取人的社会&#xff0c;外貌焦虑已变得司空见惯。美丽往往能给人带来更多的瞩目和机遇&#xff0c;但天生丽质并非人人可得。随着经济的繁荣和消费结构的升级&#xff0c;颜值经济开始崭露头角&#xff0c;医美行业因此受到了广大消费者的青睐&#xff0c;迎来了…

Leetcode 剑指 Offer II 068.搜索插入位置

题目难度: 简单 原题链接 今天继续更新 Leetcode 的剑指 Offer&#xff08;专项突击版&#xff09;系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 给定一个排序的整数数组 nums 和一个整数目标值 target &#xf…

阿波罗登月需要解决飞行控制问题,数学家卡尔曼在维纳控制的基础上提出了卡尔曼滤波

说到登月&#xff0c;很多人只想到和火箭以及航天器相关的技术&#xff0c;其实登月离不开信息技术的革命。因为从飞行控制到远程通信&#xff0c;都需要解决很多过去从未遇到过的难题。 登月首先要保证在月球上着陆的地点准确&#xff0c;而且要保证返回火箭和飞船能够在月球轨…