zoukankan      html  css  js  c++  java
  • JavaScript——操作DOM对象(重点)

    浏览器网页就是一个Dom 树形结构,要改变HTML的结构,就需要通过JavaScript来操作DOM。

    • 更新:更新Dom节点的内容,相当于更新了该DOM节点表示的HTML的内容;
    • 遍历dom节点:遍历该DOM节点下的子节点,以便进行进一步操作;
    • 删除:将该节点从HTML中删除,相当于删掉了该DOM节点的内容以及它包含的所有子节点;
    • 添加:在该DOM节点下新增一个子节点,相当于动态增加了一个HTML节点;

    要操作一个Dom节点,就必须要先获得这个Dom节点:

    1、获得节点

    • 最常用的方法是document.getElementById()document.getElementsByTagName(),以及CSS选择器document.getElementsByClassName()
    • 由于ID在HTML文档中是唯一的,所以document.getElementById()可以直接定位唯一的一个DOM节点。document.getElementsByTagName()document.getElementsByClassName()总是返回一组DOM节点。要精确地选择DOM,可以先定位父节点,再从父节点开始选择,以缩小范围。
    //对应 css 选择器
    <div id ="father">
        <h1></h1>
        <p id="p1">p1</p>
         <p class="p2">p2</p>
    
    <script>
    var h1 = document.getElementsByTagName('h1');
    var p1 = document.getElementById('p1');
    var p2 = document.getElementsByClassName('p2');
    var father = document.getElementById('father');
    
    var childrens = father.children[index]; //获取父节点下的所有子节点
     father.firstChild  //获取第一个节点
     father.lastChild   //获取第二个节点
    </script>
    

    这是原生代码,之后我们尽量都是用jQuery() ;

    2、更新节点

    <div id="id1">
    
    </div>
    
    <script>
        var id1 = document.getElementById('id1');
    </script>
    

    操作文本

    • id1.innerText='456' 修改文本的值
    • id1.innerHTML='<strong>123</strong>' 可以解析HTML文本标签

    操作css

    id1.style.color = 'yellow'; // 属性使用 字符串 包裹
    id1.style.fontSize='20px'; // - 转 驼峰命名问题
    id1.style.padding = '2em'
    

    3、删除节点

    删除节点的步骤: 先获取父节点,在通过父节点删除自己

    <div id="father">
        <h1>标题一</h1>
        <p id="p1">p1</p>
        <p class="p2">p2</p>
    </div>
    <script>
       var self = document.getElementById('p1');
       var father =  p1.parentElement;
       father.removeChild(self)
        
        // 删除是一个动态的过程;
        father.removeChild(father.children[0])
        father.removeChild(father.children[1])
        father.removeChild(father.children[2])
    </script>
    
    

    注意: 删除多个节点的时候,children 是在时刻变化的,删除节点的时候一定要注意!

    4、插入节点

    我们获得了某个Dom节点,假设这个dom节点是空的,我们通过 innerHTML 就可以增加一个元素了,但是这个DOM 节点已经存在元素了,我们就不能这么做了!会产生覆盖

    4.1、追加

    <p id="js">JavaScript</p>
    <div id="list">
        <p id="se">JavaSE</p>
        <p id="ee">JavaEE</p>
        <p id="me">JavaME</p>
    </div>
    
    <script>
        var js = document.getElementById('js');
        var list = document.getElementById('list');
        list.appendChild(js);// 追加到后面
    </script>
    

    效果:

    4.2、创建一个新的标签,实现插入

    <script>
    
        var js = document.getElementById('js'); //已经存在的节点
        var list = document.getElementById('list');
        //通过JS 创建一个新的节点
        var newP = document.createElement('p');// 创建一个p标签
        newP.id = 'newP';
        newP.innerText = 'Hello,Kuangshen';
        // 创建一个标签节点
        var myScript = document.createElement('script');
        myScript.setAttribute('type','text/javascript');
        
        // 可以创建一个Style标签
        var myStyle= document.createElement('style'); //创建了一个空style标签 
        myStyle.setAttribute('type','text/css');
        myStyle.innerHTML = 'body{background-color: chartreuse;}'; //设置标签内容
    
        document.getElementsByTagName('head')[0].appendChild(mySyle)
    
    </script>
    

    4.3、插入前面insertBefore

    var ee = document.getElementById('ee');
    var js = document.getElementById('js');
    var list = document.getElementById('list');
    // 要包含的节点.insertBefore(newNode,targetNode)
    list.insertBefore(js,ee);
    
  • 相关阅读:
    从Github上将laravel项目拉到新开发环境
    Nginx-Primary script unknown的报错的解决方法
    CentOS 7 安装PHP7+Nginx+Mysql5.7开发环境
    程序员面试经常会被问到的12个问题
    IOC(控制反转)的理解
    用冒泡排序的方法将数组从小到大排列
    常用设计模式详解
    PHP常见面试题总结
    能够遍历一个文件夹下的所有文件和子文件夹的函数
    线特征---LineMatching原理(四)
  • 原文地址:https://www.cnblogs.com/godles/p/12197804.html
Copyright © 2011-2022 走看看