当前位置:   article > 正文

【javaScript】DOM编程入门

【javaScript】DOM编程入门

一、什么是DOM编程

概念:DOM(Document Object Model)编程就是使用document对象的API完成对网页HTML文档进行动态修改,以实现网页数据和样式动态变化的编程

为什么要由DOM编程来动态修改呢?我们就得先理解网页的运行原理:

88317ae6b5624507bcd1e1bf54218c97.jpeg

如上图,程序员编写的html文件存储在服务器端,而用户使用的浏览器则由url与服务器实现交互,将服务器上的html文件经过一定规则转换传递到浏览器本地的document对象中,接着再通过浏览器解码展示document对象上的元素

这时我们去思考一个问题,如果我们要根据用户的操作来修改页面上展示的元素的话,直接去修改服务器中的html文件肯定是十分不现实的,就算可行,其效率也会十分低下。事实上,服务器端的html文件写完后一般就不会轻易去修改了。那么我们该如何去让页面元素动态变化呢?

这时document就十分重要了。我们注意到服务器端的html会在传递到本地浏览器时存储在document对象中,这时我们可以直接尝试从document对象中获取页面元素,并直接修改document对象中的数据与元素,这样就能实现用户端页面数据与样式的动态变化了。而获取和修改元素的方法就被称作DOM编程

 

二、如何获取元素

我们先得知道DOM的结构是什么样的:

9c6613a299ce4449875ede10976d5a8b.png

如上图,DOM采用树的结构来进行存储,html文件的各个元素被存储在各结点上,而结点主要被分为三类:

1 元素结点 element 标签

2 属性结点 attribute 属性

3 文本结点 text      双标签中的文字

注意:document也是一个元素对象,它是网页中最大的父级元素

这时就可以根据结点来获取想要的元素了

1、直接获取

主要语法为:

var elm=document.getElementBy指定方式(对应名称)

例如根据id值获取元素时可采用:

var elm=document.getElementById("username")

其它常见方法:

var elm=document.getElementsByTagName("input") //根据元素的标签名获取多个同名元素

var elm=document.getElementsByName("aaa")//根据元素的name属性值获得多个元素

var elm=document.getElementsByClassName("a")//根据class属性获得多个元素

2、间接获取

通过父元素获取子元素:

var cs=div01.children //通过父元素获取全部子元素

var firstChild=div01.firstElementChild//通过父元素获取第一个子元素

var lastChild=div01.lastElementChild//通过父元素获取最后一个子元素

通过子元素获取父元素:

var parent=pinput.parentElement//通过子元素获取父元素

获取当前元素的兄弟元素:

var pElement=pinput.previousElementSibling)// 获得前面的第一个元素

var nElement=pinput.nextElementSibling)// 获得后面的第一个元素

 

 

三、如何操作元素

1、操作元素

常见方法

1 操作元素的属性  元素.属性名

2 操作元素的样式  元素.style.样式名  

3 操作元素的文本  元素.innerText     只识别文本

                             元素.innerHTML     同时可以识别html码

注意:style样式名中带“-”的要转换成驼峰式,如background-color要改成backgroundColor

例如我们可以设计一个按钮来操作属性:

  1. <body>
  2. <input id="in" type="text" value="hello" />
  3. <br><br>
  4. <button onclick="changeAttribute()">操作属性</button>
  5. </body>
  6. <script>
  7. function changeAttribute(){
  8. var inp=document.getElementById("in")
  9. //修改属性值
  10. inp.type="button"
  11. inp.value="你好"
  12. }
  13. </script>

f9f6490b0bfa453f803c9561864c7bff.pngbb9fff9fbdd54931b588e5d6ab02bcda.png

按下按钮,我们会发现原来的输入框属性就被修改为按钮了,其value也发生了改变


我们可以设计一个按钮来操作样式:

  1. <body>
  2. <h1 id="hl">测试字体</h1>
  3. <button onclick="fun()">点击切换字体颜色</button>
  4. </body>
  5. <script>
  6. function fun(){
  7. var elm=document.getElementById("hl")
  8. elm.style.color="blue"
  9. }
  10. </script>

aa2f3cd7154e4d529e204b53b87a0dc4.pngbfe3917c2792485a949908f9b30cf171.png


我们可以设计一个按钮来操作文本:

  1. <body>
  2. <div id="div01">
  3. hello
  4. </div>
  5. <br><br>
  6. <button onclick="changeText()">操作文本</button>
  7. </body>
  8. <script>
  9. function changeText(){
  10. var div01=document.getElementById("div01")
  11. div01.innerText="你好"
  12. }
  13. </script>

 

f3e9d96005b44195945df12bdca6f799.pngaeea704fbc8344a59b108d0838bd18be.png

还可以用innerText方法,可以同时识别html代码:
 

  1. function changeText(){
  2. var div01=document.getElementById("div01")
  3. /*
  4. 语法 元素名.innerText 只识别文本
  5. 元素名.innerHTML 同时可以识别html代码
  6. */
  7. div01.innerHTML="<h1>你好<h1>"
  8. }

30172d9cd97b4c43852cfac607ffb16a.png


2、增删元素

 

常见方法:

var element=document.createElement("元素名") // 创建元素

父元素.appendChild(子元素)                                 //在父元素中追加子元素

父元素.insertBefore(新元素,参照元素)                  //在某个元素前增加元素

父元素.replaceChild(新元素,被替换的元素)          //用新的元素替换某个子元素

元素.remove()                                                       //删除当前元素

document.createElement(TagName)                    //根据标签名创建Element元素

Element.cloneNode(boolean)                                //复制节点  

我们写一组代码来展示一下效果:
 

  1. <body>
  2. <div>
  3. <img src="img/jay.jpg" width="100px" alt="jay.jpg">
  4. <img id="img" src="img/范特西.jpg" width="100px" alt="jay.jpg">
  5. <img src="img/八度空间.jpg" width="100px" alt="jay.jpg">
  6. </div>
  7. <button onclick="fun1()">删除一张图片</button>
  8. <button onclick="fun2()">增加一张图片</button>
  9. <button onclick="fun3()">替换图片</button>
  10. <button onclick="fun4()">复制图片</button>
  11. </body>

9ff1af992b3c44a0aad2b28a7228e7a9.png

1、删除图片

这里我们为了代码的简洁就实现一下删除最后一张图片的效果吧:

  1. function fun1(){
  2. //获取div最后一个元素
  3. var i=div.lastElementChild
  4. //通过父元素div删除子元素
  5. div.removeChild(i)
  6. }

fe0e04bdd9f24234b8b256cd3e4818ed.png

2、增加图片

这里我们就实现一下在最后增加一张图片的效果吧:

  1. function fun2(){
  2. //创建一个图片标签
  3. var i=document.createElement("img")
  4. //设置标签属性
  5. i.setAttribute("src","img/叶惠美.jpg")
  6. //将新建元素添加到div中
  7. div.appendChild(i)
  8. }

a59d8024bf454639baa6ae1e49b52529.png

 

3、替换指定元素

这里我们就展示一下替换id=img元素的效果吧:

  1. function fun3(){
  2. var i=document.createElement("img")
  3. i.setAttribute("src","img/叶惠美.jpg")
  4. //用i替换id为img的图片
  5. div.replaceChild(i,img)
  6. }

9dc91874335a4a8d864e333ebb7d89e9.png

 

总结

那么本篇文章就到此为止了,如果觉得这篇文章对你有帮助的话,可以点一下关注和点赞来支持作者哦。作者还是一个萌新,如果有什么讲的不对的地方欢迎在评论区指出,希望能够和你们一起进步✊

3971224d455149cdaf5fec2e7b5ee5c7.png

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/398290
推荐阅读
相关标签
  

闽ICP备14008679号