24.11.13 Javascript3

Javascript3

1.dom元素获取

查找元素的函数     getElementById("id值")                      查找到唯一一个元素getElementsByClassName("class值")           查找指定class的元素数组getElementsByTagName("标签名")               查找指定标签名的元素document.getElementById("myDiv").getElementsByTagName("input")    在元素内部查找指定元素document.getElementById("myDiv").getElementsByClassName("mycls")  在元素内部查找指定元素
查找元素的属性dom树中 根据节点关系查找子节点children           所有子节点(集合)firstElementChild  元素lastElementChild   元素兄弟(同级)节点nextElementSibling  下一个兄弟(同级)节点previousElementSibling 上一个兄弟(同级)节点父节点parentElement      父元素节点

示例:

console.log(document.getElementById("myUl").children);//元素集合   HTMLCollectionconsole.log(document.getElementById("myUl").childNodes);//节点集合 NodeList 不要用console.log(document.getElementById("myUl").getElementsByTagName("li"));console.log(document.getElementById("myUl").firstChild);//节点 如果有空白文本 会获得文本console.log(document.getElementById("myUl").firstElementChild);//元素节点console.log(document.getElementById("myUl").lastElementChild);//元素节点console.log(document.getElementById("myli").nextElementSibling.nextElementSibling.previousElementSibling.previousElementSibling.previousElementSibling);console.log(document.getElementById("myli").parentElement.parentElement)

js操作时 需要先获取元素

以上有丰富的api来查找元素使用

2.dom操作属性

js中属性操作属性形式操作属性读属性元素.属性写属性元素.属性 = "xxx"函数形式操作属性Attribute  属性 Properties 属性读属性getAttribute("属性名")写属性setAttribute("属性名","属性值")两套不完全体通用 (js语法特点)
document.getElementById("myText").value = "你好"document.getElementById("myText").setAttribute("val"+"ue","你不好");

所有的效果都是找元素 改属性

3.动态dom操作

原生js动态操作(了解)

创建元素(不会出现在dom树上  虚拟dom元素 支持属性设置)document.createElement("li")
//元素表示document.getElementById("xxx")追加子元素(可以把元素渲染出来 挂在dom树上)元素.appendChild(newEle)在指定元素前添加元素.insertBefore(newEle,指定的元素)复制节点元素.cloneNode(true)  bol值决定子节点是否赋值 默认值false删除元素元素.removeChild(删除的节点); //通常搭配查找元素使用

创建元素

两个步骤 1.生成出元素(虚拟dom结构 可以设置属性 页面上没有)

2.渲染(通过特定api 把元素显示到页面中的某个为止 挂载到dom树上)

function addEle(){//js创建元素//先生成虚拟dom结构//可以设置其中各种属性let newEle = document.createElement("li");//简化dom操作//innerHTML可以解析html标签newEle.innerHTML ="<input type='button' value='test'/>";//可以解析html标签//    let newBtn = document.createElement("input");//    newBtn.type="button";//    newBtn.value = "新按钮";//    newEle.appendChild(newBtn)//渲染document.getElementById("myUl").appendChild(newEle);//document.getElementById("myUl").lastElementChild.innerHTML = "nexLi";}

删除元素

function delEle(){document.getElementById("myUl").removeChild(document.getElementById("myUl").firstElementChild);}
简化dom操作(***)

//innerHTML可以解析html标签

1.追加 和替换 可以借助innerHTML可以解析html标签的特征完成
2.删除 用原生api实现
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><input type="button" value="添加元素" onclick="addEle()"><input type="button" value="删除元素" onclick="delEle()"><ul id="myUl"><li id="myLi"><input type="button" value="测试按钮"></li></ul>
</body>
<script>/*1.追加 和替换 可以借助innerHTML可以解析html标签的特征完成2.删除 用原生api实现*/function addEle(){let content = `<li><input type="button" value="新按钮"></li>`document.getElementById("myUl").innerHTML += content}function delEle(){document.getElementById("myUl").removeChild(document.getElementById("myUl").lastElementChild);}</script>
</html>

4.动态table操作

js中会table描述为数组(了解)

通过索引 添加 删除

同样可以使用简化操作

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><input type="button" value="添加一行数据" onclick="addRow()"><input type="button" value="添加一行数据" onclick="addRow2()"><input type="button" value="删除一行数据" onclick="deleteOneRow()"><table id="myTable" border="1"><tr><th>编号</th><th>名称</th><th>住址</th></tr><tr><td>1</td><td>尼古拉斯赵四</td><td>象牙山</td></tr></table>
</body>
<script>let stuData = [[1,"小明","封样大道"],[2,"小明2","封样大道2"],[3,"小明3","封样大道3"]]//insertRow 用于在表格里插入一行数据,(参数)是插入的位置 从0开始//insertCell(0)用于在表格插入表格,参数是表格的索引 从0开始function addRow(){let newRow = document.getElementById("myTable").insertRow(1)let td1 = newRow.insertCell(0)let td2 = newRow.insertCell(1)let td3 = newRow.insertCell(2)td1.innerHTML="2"td2.innerHTML="2"td3.innerHTML="2"}function addRow2(){for(let obj of stuData){//拼号要生成的元素let content = `<tr><td>${obj[0]}</td><td>${obj[1]}</td><td>${obj[2]}</td></tr>`//把元素添加到页面中                document.getElementById("myTable").innerHTML += content}}function deleteOneRow(){document.getElementById("myTable").deleteRow(1)}</script>
</html>

5String字符串对象

js中字符串   ''  ""   ``js中处理字符串更多
查找指定字符串出现的索引位置
indexOf 
lastIndexOf 更多用在检测字符串是否存在
if(myStr.lastIndexOf("bc1111")>=0)
截取字符串substring(起)    substring(起,止)  
substr(起)       substr(起,个数)
分割字符串  根据指定的字符分割为数组let myStr2 = "age=15;name=jack;addr=streetABC";
console.log(myStr2.split(";")[1].split("=")[1]);
得到name的值部分jack
转大写 toUpperCaseconsole.log(myStr.toUpperCase());转小写 toLowerCaseconsole.log(myStr.toLowerCase());
替换字符串
let myStr = "abc123abcdef";
console.log(myStr.replace("123","你好"))结果为 "abc你好abcdef";
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body></body>
<script>/*js中字符串   ''  ""   ``js中处理字符串更多*/let myStr = "abc123abcdef";// indexOf lastIndexOf //表示指定字符串存在//if(myStr.lastIndexOf("bc1111")>=0) // console.log(myStr.lastIndexOf("bc1111"));//  substring(起)    substring(起,止)  //  substr(起)       substr(起,个数)  console.log(myStr.substring(2,4));console.log(myStr.substr(2,4));//分割字符串  根据指定的字符分割为数组//常用在有格式的字符串解析上let myStr2 = "age=15;name=jack;addr=streetABC";console.log(myStr2.split(";")[1].split("=")[1]);//转大写 toUpperCaseconsole.log(myStr.toUpperCase());//转小写 toLowerCaseconsole.log(myStr.toLowerCase());//字符替换console.log(myStr.replace("123","你好"))</script>
</html>

6数学计算对象

let myNum = 10.5;//向上取整 ceilconsole.log(Math.ceil(myNum));//向下取整 floorconsole.log(Math.floor(myNum));//四舍五入 roundconsole.log(Math.round(myNum));//绝对值 算两个数之间的差值let a = 1;let b = 3;console.log(Math.abs(a-b));//随机数 random [0,1)//  0-2 +1   1-3console.log(parseInt(Math.random()*3));//向上 1-10  向下 0-9   四舍五入 0-10//一般用向下取整 //比最终要的值大1//扩倍 移动区间

注意:js中随机数需要手动计算 通过取整 扩倍 移动区间 得到需要的随机数

7日期对象

1日期获取

//获取当前运行的事件console.log(new Date());
//获取指定日期的事件
// 2001-11-11 11:11:11
// 2021/12/12 12:12:12     
console.log(new Date('2001-11-12 11:11:11'));
console.log(new Date('2021/12/12 12:12:12'));

2日期计算

// 做日期计算
let nowDate = new Date();
console.log(new Date(nowDate.getTime()-1000*60*60*24*5) );

3日期显示

//获取年
let myYear = nowDate.getFullYear();
console.log(myYear);
//获取月 0-11
let myMonth = nowDate.getMonth()+1;
console.log(myMonth);
//获取星期
let myDay = nowDate.getDay();
//获取日期
let myDate = nowDate.getDate();
console.log(myDay);//日期当中的日
console.log(myDate);//这周星期几//获取时
let myHours = nowDate.getHours()
console.log(myHours);
//获取分
let myMinutes = nowDate.getMinutes()
console.log(myMinutes);
//获取秒
let mySeconds = nowDate.getSeconds()
console.log(mySeconds);let dateStr = `${myYear}年${myMonth}月${myDate}日 ${myHours}:${myMinutes}:${mySeconds} 星期${myDay}`;
console.log(dateStr);

8数组对象

数组  数据的集合 1.指定数据类型2.指定数组长度(不可变)底层数据结构(需要再内存中直接占用空间)js弱类型js数组 没有加泛型的list不需要指明数据类型长度可变

//1.数组创建

let newArr = new Array();console.log(newArr);let newArr2 = [];console.log(newArr2);

//2.数组中的内容

//js中数组什么都可以放let newArr3 = [1,"abc",true,new Date(),[1,2,3]];console.log(newArr3);//实际使用时 一般把相同数据类型的数据放入一个数组let newArr4 = [4,1,3,8,6,2];console.log(newArr4);

//3.数组常用方法

//join 把数组串成字符串//经常与字符串的split方法对应起来 字符串 与 数组 互换console.log(newArr4.join(";"));console.log(newArr4.join(";").split(";"));//排序  排序规则  function(a,b){return a-b} a-b 升序 b-a降序console.log(newArr4.sort(function(a,b){return a-b}));//当链表使用/*newArr4.push("a")     队尾添加newArr4.pop()         队尾删除newArr4.unshift("a")  队头添加newArr4.shift()       队头删除*/newArr4.push("a")newArr4.pop()newArr4.unshift("a")newArr4.shift()console.log(newArr4);//splice()动态操作数组元素方法//splice(起始,个数,可以选参数)// 如果没有可选参数 可以做删除// 如果有可选参数   做替换 根据个数 与可选参数的个数 决定增加还是减少newArr4.splice(2,1,"a","b")

//4数组遍历 //Array可对元素属性进行调整

newArr4.forEach(function(data){console.log(data);})注意:如果是从页面获取元素 要用forEach遍历 需要转换类型//获取元素集合  Prototype HTMLCollectionlet eles = document.getElementById("btns").children;//Prototype  Array 包含的函数和属性不同//Array.from(eles);//把非Array的数组类型 转成Array 可以调用array的函数了let newEles = Array.from(eles);console.log(newEles);//转换后 可以forEach遍历newEles.forEach(function(data){data.style.color="red"})

9JSON对象

JSON javascript对象标记

//JSON格式//{key:value,key:value}//像map 做自定义对象的let myStu = {"ID":1,"name":"jack","age":15};console.log(myStu.name);myStu.name = "rose";console.log(myStu);json可以方便的 定义 读取 赋值 扩展
//数据类型//key     字符串//value   任意类型let myObj = {"name":"jack","age":15,"birthDay":new Date(),"study":function(){//this 指向当前json对象console.log(this);console.log(this.name+"在学习");}};console.log(myObj);myObj.study()
//json书写格式//标准格式 key带引号 指明是字符串  {"ID":1,"name":"jack2","age":18};//简化格式 key的引号 可以省略不写  {ID:1,name:"jack",age:15};let newStu = {ID:1,name:"jack",age:15};console.log(newStu);//前后端数据传递 使用标准json格式//纯前端使用     使用简化格式// let newStuStr = '{ID:1,name:"jack",age:15}'// console.log(JSON.parse(newStuStr).name);//json转换方法//JSON.stringify(newStu)                          json对象转标准格式字符串//JSON.parse('{"ID":1,"name":"jack2","age":18}')  标准格式字符串 转json对象console.log(JSON.stringify(newStu));console.log(JSON.parse('{"ID":1,"name":"jack2","age":18}'));
//json实际使用时 经常搭配数组使用let students = [{ID:2,name:"jack",age:15},{ID:2,name:"jack2",age:15},{ID:3,name:"jack3",age:15}]let myClass = {className:922,classAddr:'9楼922',students:[{ID:2,name:"jack",age:15},{ID:2,name:"jack2",age:15},{ID:3,name:"jack3",age:15}]}

省市县级联练习

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><!-- 级联菜单子级数据 根据父级数据动态生成 --><select id="provSelect" onchange="changeCityList()"><option>---------请选择------------</option></select>省<select id="citySelect" onchange="changeCounty()"><option>---------请选择------------</option></select>市<select id="countySelect"><option>---------请选择------------</option></select>县/区
</body>
<script src="./js/myData.js"></script>
<script>/*1.元素动态生成  替换2.练习json使用*/console.log(areaData);let currentCityList = [];//1填充省数据areaData.forEach(function(prov){//拼元素let content = `<option value="${prov.code}" >${prov.name}</option>`;//console.log(content);//追加元素document.getElementById("provSelect").innerHTML+=content})//2省市联动//省选择之后 找到省对应的市列表 拼到市的select中function changeCityList(){//当前选中的省编号let currentProv =  document.getElementById("provSelect").valueconsole.log(currentProv);//清理选项 从请选择开始//清市列表document.getElementById("citySelect").innerHTML="<option>---------请选择------------</option>"//清县区列表document.getElementById("countySelect").innerHTML = "<option>---------请选择------------</option>"areaData.forEach(function(prov){if(currentProv == prov.code){//找到省了 读取市列表//console.log(prov.city);//保留当前市列表currentCityList = prov.city;//把city列表 写入到citySelect中prov.city.forEach(function(city){//拼元素let content = `<option value="${city.code}">${city.name}</option>`;//追加元素document.getElementById("citySelect").innerHTML+=content})}})}function changeCounty(){//当前选中的市编号let currentCity =  document.getElementById("citySelect").valueconsole.log(currentCity);//选项从头开始document.getElementById("countySelect").innerHTML = "<option>---------请选择------------</option>"//根据暂存的市列表 找到当前的市信息 currentCityList.forEach(function(city){if(city.code == currentCity){//找到市中的县区//console.log(city.area);city.area.forEach(function(county){//拼元素let content = `<option value="${county.code}">${county.name}</option>`;document.getElementById("countySelect").innerHTML+=content;})}})}</script>
</html>

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

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

相关文章

十三、注解配置SpringMVC

文章目录 1. 创建初始化类&#xff0c;代替web.xml2. 创建SpringConfig配置类&#xff0c;代替spring的配置文件3. 创建WebConfig配置类&#xff0c;代替SpringMVC的配置文件4. 测试功能 1. 创建初始化类&#xff0c;代替web.xml 2. 创建SpringConfig配置类&#xff0c;代替spr…

(干货)Jenkins使用kubernetes插件连接k8s的认证方式

#Kubernetes插件简介 Kubernetes 插件的目的是能够使用 Kubernetes 配合&#xff0c;实现动态配置 Jenkins 代理&#xff08;使用 Kubernetes 调度机制来优化负载&#xff09;&#xff0c;在执行 Jenkins Job 构建时&#xff0c;Jenkins Master 会在 kubernetes 中创建一个 Sla…

俏美韵从心出发,与女性一道为健康生活贡献力量

近期发布的《2025 全球食品与饮料》报告中显示&#xff0c;“回归本源”为2025年食品饮料赛道的趋势之一&#xff0c;消费者对于产品成分要求越来越严格&#xff0c;尤其是女性消费者&#xff0c;对成分是否自然&#xff0c;营养含量等方面越来越看重&#xff0c;俏美韵品牌从产…

区块链技术在慈善捐赠中的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 区块链技术在慈善捐赠中的应用 区块链技术在慈善捐赠中的应用 区块链技术在慈善捐赠中的应用 引言 区块链技术概述 定义与原理 发…

mongoDB的安装及使用

mongodb的安装参考&#xff1a; Centos系统中mongodb的安装详解_centos安装mongodb-CSDN博客 不要下载最新的版本&#xff0c;新的版本中mongo命令无法使用&#xff0c;也就是安装后不能通过mongo命令登录&#xff0c;我这里使用5.0.30版本&#xff1b; mongodb客户端demo: …

DNS面临的4大类共计11小类安全风险及防御措施

DNS在设计之初&#xff0c;并未考虑网络安全限制&#xff0c;导致了许多问题。DNS安全扩展(DNSSEC)协议的开发旨在解决DNS的安全漏洞&#xff0c;但其部署并不广泛&#xff0c;DNS仍面临各种攻击。接下来我们一起看下DNS都存在哪些安全攻击及缓解措施&#xff0c;旨在对DNS安全…

MySql结合element-plus pagination的分页查询

实现效果如下&#xff1a; 重点&#xff1a;使用mysql查询的limit和offset 原生SQL写法&#xff1a; select c.id as deptid,c.name as department,position,a.name staffname,2024-11 as shijian ,CASE WHEN b.shijian IS NULL THEN no ELSE yes END AS submit from fa_wecom…

ubuntu20.04安装FLIR灰点相机BFS-PGE-16S2C-CS的ROS驱动

一、Spinnaker 安装 1.1Spinnaker 下载 下载地址为&#xff1a; https://www.teledynevisionsolutions.com/support/support-center/software-firmware-downloads/iis/spinnaker-sdk-download/spinnaker-sdk–download-files/?pnSpinnakerSDK&vnSpinnakerSDK 在上述地址中…

什么是数字图像?

点赞 关注 收藏 学会了 什么是数字图像&#xff1f; 本文可在公众号「德育处主任」免费阅读 弄懂数字图像的概念对学习计算机视觉很有帮助。 那么&#xff0c;什么是数字图像&#xff1f; 字面意思&#xff0c;数字图像就是有数字组成图像。通常由像素&#xff08;Pixel&…

2024年11月13日

1.创业法律指南 留置权和其他三个权 定金和订金 一般保证和连带保证 1.案例 物权编之担保法律制度案例一 冯系养鸡专业户&#xff0c;为改建鸡会和引进良种需资金20万元。冯向陈借款10万元&#xff0c;以自己的一套价值10万元的音响设备抵押&#xff0c;双方立有抵押字据&a…

Android OpenGL ES详解——立方体贴图

目录 一、概念 二、如何使用 1、创建立方体贴图 2、生成纹理 3、设置纹理环绕和过滤方式 4、激活和绑定立方体贴图 三、应用举例——天空盒 1、概念 2、加载天空盒 3、显示天空盒 4、优化 四、应用举例——环境映射:反射 五、应用举例——环境映射:折射 六、应用…

2024版本IDEA创建Sprintboot项目下载依赖缓慢

目录 步骤一&#xff1a;在IDEA中搜索Maven(双击shift) 步骤二&#xff1a;找到Maven下的settings.xml文件修改镜像 ​编辑 ​编辑​编辑 步骤三&#xff1a;用VScode打开settings.xml文件修改镜像 ​编辑 步骤一&#xff1a;在IDEA中搜索Maven(双击shift) 步骤二&#xff…

Android Framework AMS(16)进程管理

该系列文章总纲链接&#xff1a;专题总纲目录 Android Framework 总纲 本章关键点总结 & 说明&#xff1a; 说明&#xff1a;本章节主要解读AMS 进程方面的知识。关注思维导图中左上侧部分即可。 我们本章节主要是对Android进程管理相关知识有一个基本的了解。先来了解下L…

python购物计算 2024年6月青少年电子学会等级考试 中小学生python编程等级考试一级真题答案解析

目录 python购物计算 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序代码 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python购物计算 2024年6月 python编程等级考试一级编程题 一、题目要求 …

Pycharm PyQt5 环境搭建创建第一个Hello程序

第一步: 创建Pycharm项目,下载包: pip install PyQt5 -i https://pypi.tuna.tsinghua.edu.cn/simple/pip install PyQt5-tools -i https://pypi.tuna.tsinghua.edu.cn/simple/下载好了之后,可以看到相应包: PyQt5:PyQt5是一套Python绑定Digia QT5应用的框架。Qt库是最…

【Vue】Vue3.0(十九)Vue 3.0 中一种组件间通信方式-自定义事件

文章目录 一、自定义事件概念及使用场景二、代码解释三、新的示例 一、自定义事件概念及使用场景 概念 在 Vue 3.0 中&#xff0c;自定义事件是一种组件间通信的机制&#xff0c;允许子组件向父组件传递数据或触发父组件中的操作。子组件通过defineEmits函数定义可以触发的事件…

Java的dto,和多表的调用

1理论 需求是新增菜品eg&#xff1a;菜名:豆腐脑&#xff1b;口味&#xff1a;甜口&#xff0c;咸口&#xff0c; 菜单表&#xff1a;dish&#xff1b;口味表dish_flavor&#xff1b; 1dto:数据传输对象 新建一个dishDto对象有两个表里的属性 2用到两个表&#xff0c;dish,d…

【前端学习指南】Vue computed 计算属性 watch 监听器

&#x1f36d; Hello&#xff0c;我是爱吃糖的范同学 &#x1f534; 想把自己学习技术的经历和一些总结分享给大家&#xff01; &#x1f534; 通过这样的方式记录自己成长&#xff0c;同时沉淀自己的技术&#xff0c;我会把所有额外的时间和经历投放到CSDN和公众号&#xff0…

【算法】——二分查找合集

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 零&#xff1a;二分查找工具 1&#xff1a;最基础模版 2&#xff1a;mid落点问题 一&#xff1a;最…

读数据质量管理:数据可靠性与数据质量问题解决之道03数据目录

1. 同步数据 1.1. 不同的数据仓库和数据湖通过数据集成层来进行桥接 1.2. AWS Glue、Fivetran和Matillion等数据集成工具从不同来源收集数据&#xff0c;统一这些数据&#xff0c;并将其转换为上游来源 1.3. 数据集成的一个典型用例是收集数据湖的数据并以结构化格式将其加载…