当前位置: 首页 > news >正文

JavaScript基础(三)

文章目录

简介

一、DOM介绍

二、DOM节点划分类型

1.元素节点(具体的标签例如:html,head,title,p,h1等)

2.属性节点(元素中的属性)

3.文本节点(文本内容)

三、节点关系

        父子关系(parent-child):

        兄弟关系(Sibling):

四、DOM操作内容:

        1. 查询元素/获得元素(进行操作元素,或者元素的属性,文本)

        2. 操作属性

       

         3. 操作CSS样式(一个特殊的属性style)

       4. 操作文本

5. 操作元素节点(增加节点/删除节点)


简介

DOM结构节点类型划分:元素,属性,文本。 节点的关系

DOM元素的操作,操作元素,操作元素属性,操作css样式,操作文本内容,操作元素节点


一、DOM介绍

DOM(Document Object Model)即文档对象模型。用于XHTML、XML文档的应用程序接口(API)。

DOM提供一种结构化的文档描述方式,从而使HTML内容使用结构化的方式显示。由一系列对象组成,访问、检索、修改XHTML文档内容与结构的标准方法. 是跨平台语言,顶层是document对象。

二、DOM节点划分类型

1.元素节点(具体的标签例如:html,head,title,p,h1等)
2.属性节点(元素中的属性)
3.文本节点(文本内容)

三、节点关系

        父子关系(parent-child):

                <html>元素作为父级,<head>和<body>元素作为子级。

        兄弟关系(Sibling):

                <a>和<h1>元素就是兄弟关系。

四、DOM操作内容:

        1. 查询元素/获得元素(进行操作元素,或者元素的属性,文本)

        获得/查询元素(直接/简介获得对象的方式,id,name,标签名 |子节点,父节点,上节点,下节点):

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>DOM节点对象获得方式</title><script>// ------------直接获得节点对象的方式function demo1(){// id方式直接获得---单个对象var  username =   window.document.getElementById('username')alert(username)}// 通过标签名获得多个元素对象function demo2(){var inp = document.getElementsByTagName('input')alert(inp)alert(inp[2])alert(inp.length)}// 通过name属性获得function demo3(){var inp = document.getElementsByName('hobby')alert(inp.length)}//-------- 间接获得元素对象的方式 (父节点,子节点)function demo4(){// 获得父节点后,找到下面的子节点var professional = document.getElementById('professional');var child = professional.childNodesconsole.log(child)  //空白为本也算一个节点,所以长度是9}function demo5(){//获得节点id ,找到父节点var p2 = document.getElementById('p2')var parent = p2.parentNodeconsole.log(parent)}function demo6(){// 获得下一个节点 var p2 = document.getElementById('p2')// var next = p2.nextSibling.nextSibling   //包含空白文档var next = p2.nextElementSibling        //不包含空白文档console.log(next)// 获得上一个节点// var up = p2.previousSibling.previousSibling     //包含空白文档var up = p2.previousElementSibling              //不包含空白文书console.log(up)}</script></head>
<body onload="demo6()"><form action="" id="form1">用户名:<input type="text" name="username" id="username" value="输入姓名"><br/>密码:<input type="password" name="pwd" id="pwd"><br/>爱好:<input type="checkbox" name="hobby" value="music">音乐<input type="checkbox" name="hobby" value="art">绘画<input type="checkbox" name="hobby" value="sports">体育 <br/>职业:<select name="professional" id="professional"><option value="1">工人</option><option value="2" id="p2">技术人员</option><option value="3">教育职业</option><option value="4">医疗行业</option></select></form>
</body>
</html>

        2. 操作属性

    获得元素的属性,操作元素的属性


<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>操作元素属性</title><script>function demo1(){// 方式一(常用,实时更新):-------获得节点对象的属性,操作元素的属性//获得id名称是inp1对象节点var inp1 = document.getElementById('inp1')//获得对象的属性var ty = inp1.typevar na = inp1.namevar va = inp1.valuealert(ty+'---'+na+'---'+va)//操作元素属性inp1.type = 'button'inp1.value = '测试改变'//方式二(默认值,不会改变):---------获得元素的属性//获得对象属性的默认值var ty1 = inp1.getAttribute('type')var na2 = inp1.getAttribute('na')var va2 = inp1.getAttribute('value')alert(ty1+'===='+na2+'==='+va2)//     //操作元素属性(//     inp1.setAttribute('type','button')}</script>
</head>
<body><input type="text" name="uname" id="inp1" value="张三"/><br /><input type="button"  name="" value="测试元素属性" onclick="demo1()">
</body>
</html>
       
         3. 操作CSS样式(一个特殊的属性style)
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>操作元素样式</title><script>function demo1(){var div1 = document.getElementById('div1')//获得css样式,只支持行内样式cssvar wi = div1.style.widthvar he = div1.style.heightalert('width:'+wi+'----'+'heigth:'+he)//操作元素的css样式   对于background 格式的样式在js中使用驼峰命名法进行改变div1.style.width = '300px'div1.style.height = '300px'div1.style.backgroundColor = 'red'//增加样式:通过增加class类来增加对应的css样式,    注意:classNamediv1.className = 'div2'}</script><style>.div2{border: 4px solid rgb(0, 0, 0);}</style></head>
<body><!-- 行内样式的css --><div id="div1" style="width: 200px; height: 200px; background-color: palegoldenrod;"></div><input type="button" neme="" id="" value="操作样式" onclick="demo1()">
</body>
</html>
       4. 操作文本

       获取文本内容,修改文本

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>操作文本内容和值</title><script>function demo1(){//获得div1的对象var div = document.getElementById('div1')//获得元素的文本内容var inn = div.innerHTML   //获得整个格式,会s识别html中的标签信息  适用于双标签var inn2 = div.innerText  //只获得文本                      适用于双标签console.log(inn)console.log(inn2)div.innerHTML += '<h1>1号标签</h1>'// div.innerText += '<h1>1号标签</h1>'}function demo2(){var in2 = document.getElementById('inp2')var va = in2.value   //不加括号alert(va)}/*注意:双标签有innerHTML 和 innerText单标签获都是用value 获得,和获得属性一样双标签中有两个特殊的标签:select textarea 使用.value*/function demo3(){//获得select对象var sel = document.getElementById('sele')alert(sel.value)  //没有value属性,直接获取文本,有value属性获得属性值}function demo4(){var te = document.getElementById('tex')alert(te.value)}</script>
</head>
<body><div id="div1"> <span>双标签我们不一样</span></div><input type="button" value="操作元素的文本内容" onclick="demo1()"><br/><input type="text" name="inp2" id="inp2" value="" ><input type="button" value="单标签操作" onclick="demo2()"> <br/><select id="sele" onchange="demo3()"><option value="0">--请选择--</option><option value="1">中国</option><option >英国</option><option >俄罗斯</option></select> <br /><textarea id="tex" rows="10" cols="10">12354</textarea><input type="button" value="特殊的双标签" onclick="demo4()"></body>
</html>
5. 操作元素节点(增加节点/删除节点)
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>DOM操作元素节点对象</title><script>function addNode(){//获得表单对象var fom = document.getElementById('fom')//创建节点的方法  先创建一个p节点,在增加input(file)节点,在增加一个删除节点var p = document.createElement('p')p.innerText='照片'var inp = document.createElement('input')inp.type = 'file'var inp2 = document.createElement('input')inp2.type = 'button'inp2.value = '删除'//删除方法inp2.onclick=function(){//移除子节点p.removeChild(inp)p.removeChild(inp2)//移除本身p.remove()}//添加节点对象 // fom.appendChild(p)//获得最后一个节点对象var lastNode = document.getElementById('lastNode')//在指定元素之前添加节点fom.insertBefore(p,lastNode)p.appendChild(inp)p.appendChild(inp2)}</script>
</head>
<body><form id="fom"><p>用户名:<input type="text"></p><p>照片:<input type="file"><input type="button" value="添加" onclick="addNode()"></p><p id="lastNode"><input type="button" name="" id="" value="提交"><input type="button" name="" id="" value="清空"></p></form></body>
</html>

http://www.lryc.cn/news/584601.html

相关文章:

  • C++中的list的学习
  • 解析几何几百年重大错误:将无穷多各异圆盘(球)误为同一点集
  • kotlin中withContext,async,launch几种异步的区别
  • 目标检测中的评价指标计算
  • Spring Boot项目中大文件上传的高级实践与性能优化
  • 三维旋转沿轴分解
  • Java设计模式之行为型模式(观察者模式)介绍与说明
  • 约束-1-约束
  • selenium中xpath的用法大全
  • Web学习笔记2
  • [架构之美]虚拟机Ubuntu密码重置
  • nmap扫描指定网段中指定开放端口的主机(IP,mac地址)
  • Kafka的无消息丢失配置怎么实现
  • 删除k8s安装残留
  • 「Java案例」求PI的值
  • 告别卡顿与慢响应!现代 Web 应用性能优化:从前端渲染到后端算法的全面提速指南
  • 快速搭建服务器,fetch请求从服务器获取数据
  • 搭建自动化工作流:探寻解放双手的有效方案(1)
  • RK3568项目(八)--linux驱动开发之基础外设(上)
  • Linux驱动开发(platform 设备驱动)
  • ARM单片机滴答定时器理解与应用(二)(详细解析)(完)
  • 多线程交替打印
  • 技术学习_检索增强生成(RAG)
  • 【个人笔记】负载均衡
  • 微服务项目远程调用时的负载均衡是如何实现的?
  • Prompt提示词的主要类型和核心原则
  • 【WEB】Polar靶场 Day8 详细笔记
  • Docker 镜像加速站汇总与使用指南
  • SpringBoot系列—MyBatis(xml使用)
  • Flink自定义函数