• javascript之DOM操作


    一、Dom介绍

      什么是Dom?

       DOM:文档对象模型。DOM 为文档提供了结构化表示,并定义了如何通过脚本来访问文档结构。目的其实就是为了能让js操作html元素而制定的一个规范。

      DOM就是由节点组成的。

      1.   元素节点:HMTL标签。

      2.   文本节点:标签中的文字(比如标签之间的空格、换行)

      3.   属性节点::标签的属性。

      Dom能做些什么?

      1.   找对象(元素节点)

      2.   设置元素的属性值

      3.   设置元素的样式

      4.   动态创建和删除元素

      5.   事件的触发响应:事件源、事件、事件的驱动程序

    二、元素节点的操作相关

      元素节点的获取

      document.getElementById()    根据Id获取元素节点

     1     <div id="div1">
     2         <p id="p1">
     3             我是第一个P</p>
     4         <p id="p2">
     5             我是第二个P</p>
     6     </div>
     7     
     8     window.onload = function () {
     9             var str = document.getElementById("p1").innerHTML;
    10             alert(str);        //弹出    我是第一个P
    11         }

      document.getElementsByName()    根据name获取元素节点

     1  <div id="div1">
     2         <p id="p1">
     3             我是第一个P</p>
     4         <p id="p2">
     5             我是第二个P</p>
     6         <input type="text" value="请输入值" name="userName" />
     7         <input type="button" value="确定" onclick="fun1()">
     8     </div>
     9         
    10         function fun1() {
    11             var username = document.getElementsByName("userName")[0].value;
    12             alert(username);    //输出userName里输入的值
    13         }

      document.getElementsByTagName()    根据HTML标签名获取元素节点,注意getElements***的选择器返回的是一个NodeList对象,能根据索引号选择其中1个,可以遍历输出。

     1     <div id="div1">
     2         <p id="p1">
     3             我是第一个P</p>
     4         <p id="p2">
     5             我是第二个P</p>
     6     </div>
     7 
     8     window.onload = function () {
     9             var str = document.getElementsByTagName("p")[1].innerHTML;
    10             alert(str);        //输出  我是第二个P,因为获取的是索引为1的P,索引从0开始
    11         }    
    12 
    13     window.onload = function () {
    14             var arr = document.getElementsByTagName("p");
    15             for (var i = 0; i < arr.length; i++) {
    16                 alert(arr[i].innerHTML);
    17             }
    18         }
    19 
    20     window.onload = function () {
    21             var node = document.getElementById("div1");
    22          var node1 = document.getElementsByTagName("p")[1];    //从获取到的元素再获取
    23             alert(node1.innerHTML);
    24     }

      document.getElementsByClassName()    根据class获取元素节点

     1   <div id="div1">
     2         <p id="p1" class="class1">
     3             我是第一个P</p>
     4         <p id="p2">
     5             我是第二个P</p>
     6     </div>
     7 
     8     window.onload = function () {
     9             var node = document.getElementsByClassName("class1")[0];
    10             alert(node.innerHTML);
    11         }

      元素节点的创建,插入与删除

      document.createTextNode()    创建一个文本节点

    1  <div id="div1">
    2             <p id="p1">我是第一个P</p>
    3             <p id="p2">我是第二个P</p>
    4         </div>
    5 
    6     window.onload = function () {
    7             var textNode = document.createTextNode("<p>我是一个javascript新建的节点</p>");
    8             document.getElementById("div1").appendChild(textNode);
    9         }

      document.createElement()    创建一个元素节点

     1  <div id="div1">
     2             <p id="p1">我是第一个P</p>
     3             <p id="p2">我是第二个P</p>
     4         </div>
     5 
     6     window.onload = function () {
     7             var pNode = document.createElement("p");
     8             pNode.textContent = "新建一个P节点";
     9             document.getElementById("div1").appendChild(pNode);
    10         }

      appendChild & insertBefore   插入节点

     1     <div id="div1">
     2             <p id="p1">我是第一个P</p>
     3         </div>
     4 
     5     window.onload = function () {
     6             var pNode1 = document.createElement("p");
     7             pNode1.textContent = "insertBefore插入的节点";
     8             var pNode2 = document.createElement("p");
     9             pNode2.textContent = "appendChild插入的节点";
    10             document.getElementById("div1").appendChild(pNode2);
    11             document.getElementById("div1").insertBefore(pNode1,document.getElementById("p1"));
    12         }
    13 // appendChild()    将一个节点插入到调用节点的最后面
    14 // insertBefore()    接受两个参数,第一个为待插入的节点,第二个指明在哪个节点前面如
    15 // 果不传入第二个参数,则跟appendChild一样,放在最后。

      removeChild() & replaceChild() 删除和替换节点

        <div id="div1">
                <p id="p1">我是第一个P</p>
                <p id="p2">我是第二个P</p>
            </div>
    
        window.onload = function () {
                var div1 = document.getElementById("div1");
                div1.removeChild(document.getElementById("p2"));
            }
    //   由父元素调用,删除一个子节点。注意是直接父元素调用,删除直接子元素才有效,删除孙
    //子元素就没有效果了。
     1     <div id="div1">
     2             <p id="p1">我是第一个P</p>
     3             <p id="p2">我是第二个P</p>
     4         </div>
     5 
     6     window.onload = function () {
     7             var div1 = document.getElementById("div1");
     8             var span1 = document.createElement("span");
     9             span1.textContent = "我是一个新建的span";
    10             div1.replaceChild(span1,document.getElementById("p2"));
    11         }
    12 //删除一个子节点,并用一个新节点代替它,第一个参数为新建的节点,第二个节点为被替换的
    13 //节点
  • 相关阅读:
    iframe自动适应高度
    php正则过滤html标签、空格、换行符的代码,提取图片
    destoon使用中的一些心得
    Fiddler 过滤 css,图片等请求url 正则表达式
    不用递归实现无限分类数据的树形格式化
    PHP定时执行任务的实现
    Discuz! X3.1去除内置门户导航/portal.php尾巴的方法
    discuzx完全自定义设计模板门户首页,栏目,专题模板方法
    Apache环境.htaccess伪静态301跳转(www与不带www)
    15万甚至30万以内的SUV值不值得买?
  • 原文地址:https://www.cnblogs.com/qq631243523/p/9708240.html
Copyright © 2020-2023  润新知