zoukankan      html  css  js  c++  java
  • Python学习第84天(JavaScript的DOM节点增删改查和属性设置)

      今天学到的是关于如果使用函数来实现对节点的增删改查,主要是增删改

      增加标签:

        creatElement(name)  创建元素

        appenChild()  进行元素添加

      删除标签:

        removeChild()

      上面说到的这三个方法,调用方法的对象都是父集节点标签

        先直接写一个案例吧,设定两个div标签,通过设定两个button,一个进行增加,一个进行删除    

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .div1{
                width:2000px;
                height: 200px;
                background-color: darkmagenta;
            }
            .div2{
                width: 2000px;
                height: 200px;
                background-color: aqua;
            }
        </style>
    </head>
    <body>
    <div class="div1">
        <button onclick="add()">add</button>
    </div>
    <div class="div2">
        <button onclick="del()">del</button>
    </div>
    <script>
        var father = document.getElementsByClassName('div1')[0]
        function add() {
            var ele = document.createElement('p');
            ele.innerHTML="<h1>hello p</h1>";
            father.appendChild(ele);
        }
        function del() {
            var ele = document.getElementsByTagName('p')[0]
            if (ele){father.removeChild(ele)}
        }
    </script>
    </body>
    </html>

        接着是关于属性的修改问题,有两种方法:

        第一种方式:

               使用上面增和删结合完成修改

        第二中方式:

          使用setAttribute();方法修改属性          

          使用innerHTML属性修改元素的内容

        拿刚才增加过程中为例,我们对增加的标签进行css属性设置,标签属性设置  

        function add() {
            var ele=document.createElement("p");//<p></p>
            ele.innerHTML="<h1>hello p</h1>";   常用的,但不属于DOM语言,不正统
            //ele.innerText="<h1>hello p</h1>";
            ele.style.color="red";
            ele.style.fontSize="10px";
            var father=document.getElementsByClassName("div1")[0];
            father.appendChild(ele)
        }

      下面是一个比较详细的介绍:

    <script type="text/javascript">
    //在第一个div中动态增加一个a标签. 该a标签点击之后跳转到百度首页.
        function addNode(){
            //1.获得 第一个div
            var div = document.getElementById("div_1");
            //2.创建a标签  createElement==>创建一个a标签   <a></a>
            var eleA =  document.createElement("a");
            //3.为a标签添加属性 <a href="http://www.baidu.com"></a>
            eleA.setAttribute("href", "http://www.baidu.com");
            //4.为a标签添加内容 <a href="http://www.baidu.com">百度</a>
            eleA.innerHTML = "百度";    
            //5.将a标签添加到div中
            div.appendChild(eleA);
        }
        //点击后 删除div区域2
        function deleteNode(){
            //1 获得要删除的div区域
                var div = document.getElementById("div_2");
            //2.获得父亲
                var parent = div.parentNode;
            //3 由父亲操刀 
                parent.removeChild(div);
        }
        //点击后 替换div区域3 为一个美女
        function updateNode(){
            //1 获得要替换的div区域3
            var div = document.getElementById("div_3");
            //2创建img标签对象 <img />
            var img = document.createElement("img");
            //3添加属性 <img src="001.jpg" />
            img.setAttribute("src", "001.JPG");
            //4.获得父节点
            var parent = div.parentNode;
            //5.替换
            parent.replaceChild(img, div);
        }
        //点击后 将div区域4 克隆一份 添加到页面底部
        
        function copyNode(){
            //1.获取要克隆的div
            var div = document.getElementById("div_4");
            //2.克隆 参数为true 那么克隆时克隆所有子元素. false 只克隆自己
            var div_copy = div.cloneNode(true);
            //3.获得父亲
            var parent = div.parentNode;
            //4.添加
            parent.appendChild(div_copy);
        }        
    </script>

        

    上面这些使用非常方便,下面就说说这个修改html属性的一些方法吧

      改变 HTML 内容 

              改变元素内容的最简答的方法是使用 innerHTML ,innerText。

          innerHTML可以识别引号内的<p>这一类的标签内容

          innerText默认识别引号内的全是文本

      改变 CSS 样式 

        <p id="p2">Hello world!</p>

          document.getElementById("p2").style.color="blue";

          <br> .style.fontSize=48px

      改变 HTML 属性 

              elementNode.setAttribute(name,value)

              elementNode.getAttribute(name)<-------------->elementNode.value(DHTML)

      创建新的 HTML 元素 

              createElement(name)

      删除已有的 HTML 元素 

              elementNode.removeChild(node)

      关于class的操作 

             elementNode.className

              elementNode.classList.add

              elementNode.classList.remove

          classList.add( newClassName );
            添加新的类名,如已经存在,取消添加
          classList.contains( oldClassName );
            确定元素中是否包含指定的类名,返回值为true 、false;
          classList.remove( oldClassName );
            移除已经存在的类名;
          classList.toggle( className );
            如果classList中存在给定的值,删除它,否则,添加它;
          classList.replace( oldClassName,newClassName );
            类名替换

    然后下面是一个习题,我们通过对标签的增删改查,实现我们经常在登录网页时,点击登录,中间会出现悬浮框的效果  

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .content{
                height: 1800px;
                background-color: white;
            }
    
            .shade{
                position: fixed;
                top:0;
                left: 0;
                right: 0;
                bottom: 0;
                background-color: gray;
                opacity: 0.7;
            }
    
            .model{
                width: 200px;
                height: 200px;
                background-color: bisque;
                position: absolute;
                top:50%;
                left: 50%;
                margin-top: -100px;
                margin-left: -100px;
            }
            .hide{
                display: none;
            }
        </style>
    </head>
    <body>
    
    <div class="content">
        <button onclick="show()">show</button>
     </div>
    <div class="shade hide"></div>
    <div class="model hide">
        <button onclick="cancel()">cancel</button>
    </div>
    <script>
        function show() {
            var ele_shade=document.getElementsByClassName("shade")[0];
            var ele_model=document.getElementsByClassName("model")[0];
    
            ele_model.classList.remove("hide");
            ele_shade.classList.remove("hide");
        }
    </script>
    </body>
    </html>

      下面这个悬浮框还缺少取消的功能,明天实现。

     

  • 相关阅读:
    反恐24小时[第1季]——我打赌这是我第一次写观后感
    单片机设计-带时间显示的十字路口交通灯控制系统
    ASPxGridView控件的使用
    DataRow复制一行到另一个DataTable
    参数化、检查点、关联基本理解
    录制方式及一些脚本字段信息
    参数化的一些实践
    [转载]WinXp 自动运行的设置方法
    [转载]Windows Xp中如何设置自动登录
    [转载]WinXp 自动运行的设置方法
  • 原文地址:https://www.cnblogs.com/xiaoyaotx/p/12934666.html
Copyright © 2011-2022 走看看