• js DOM操作


    DOM操作

    获取元素:

    DOM传统获取元素有三种方式,getElementById、getElementsByTagName、getElementsByClassName。

    <div class="box" id="timmer">box1</div>
    //下面三种方式均可获取到该元素
    var timmer = document.getElementById("timmer");
    var timmer = document.getElementsByTagName("div");
    //类选择器是HTML5新增的
    var timmer = document.getElementsByClassName("box"); console.log(timmer); // console.log 返回的是元素对象 console.log(typeof timmer); // console.dir() 打印返回的元素对象,更好的查看它的属性和方法 console.dir(timmer)

    querySelector() 获取元素(只能获取第一个元素):

    //和上面三种方式获取元素一样,但早期ie不支持
    var firstbox = document.querySelector(".box");
    var firstbox = document.querySelector("div");
    var firstbox = document.querySelector("#timmer");

    querySelectorAll() 获取元素:

    <body>
        <div class="box">box1</div>
        <div class="box">box2</div>
    
        <div id="nav">
            <ol>
                <li>1</li>
                <li>2</li>
                <li>3</li>
            </ol>
        </div>
    </body>
    
    <script>// querySelector 也是HTML5新增的
        // document.querySelector("选择器") 可以传所有的选择器类型,返回第一个元素对象
        var firstbox = document.querySelector(".box");
        console.log(firstbox);
        var nav = document.querySelector("#nav");
        console.log(nav);
        var firstLi = document.querySelector("li");
        console.log(firstLi);
        
         // document.querySelectorAll 获取所有元素对象
        var allLi = document.querySelectorAll("li");
        console.log(allLi);
    </script>

     

     获取特殊元素:

    <script>
        // 1. 获取body
        var body = document.body;
        console.log(body);
        // 2. 获取html
        var html = document.documentElement;
        console.log(html);
    </script>

     事件

    事件三要素: 事件源 事件类型 事件处理程序。

    <body>
        <button>事件三要素</button>
        <span>:</span>
    </body>
    <script type="text/javascript">
        // 事件三要素: 事件源 事件类型 事件处理程序
        var btn = document.querySelector("button");
        var span = document.querySelector("span");
        btn.onclick = function(){
            console.log("事件源 事件类型 事件处理程序");
            span.innerText = ":事件源 事件类型 事件处理程序";
        }
        
        function getCurrentDate(){
            var date = new Date();
            console.log(date);
            return date;
        }
    </script>

    点击前:点击后:

    元素属性

    1. 修改普通元素内容用innerText、innerHTML。

    <body>
        <p id="time">日期:2021</p>
        <div id="div">
            我是第一行
            <div>
                    我是第二行
            </div>
        </div>
    </body>
    <script type="text/javascript">
        var time = document.querySelector("#time");
        
        /**
         * innerText 不识别 html标签,非标准
         * innerHTML识别 html标签,W3C标准
         * innerText、innerHTML 都可以读取元素内容
         * innerText 忽略所有标签、空格、换行
         * innerHTML 识别标签、空格、换行
         * */
        // time.innerText = "<strong>日期:</strong>2021";
        time.innerHTML= "<strong>日期:</strong>2021";
        
        var div = document.querySelector("#div");
        console.log(div.innerText);
        console.log(div.innerHTML);
    </script>

     2. 表单属性

    表单元素内容是value。input有很多种type。

    <body>
        <button>btn</button>
        <input placeholder="我是input" title="input" />
    </body>
    <script type="text/javascript">
        /**
         * 利用DOM可以操作表单的如下属性;
         * type, value, checked, selected, disabled
         * */
        var btn = document.querySelector("button");
        var input = document.querySelector("input");
        btn.onclick = function() {
            // innerHTML是普通元素的,表单元素是value
            // input.innerHTML = "被点击了";
            input.value = "被点击了";
            // 下面两句等价
            // this 指向事件函数的调用者
            // btn.disabled = true;
            this.disabled = true;
        }
    </script>

    点击前: 点击后:

     3. 样式属性

    操作style样式时:a. 属性用驼峰命名法;b. DOM操作修改行内样式,行内样式权重更高。

    <body>
        <div></div>
    </body>
    <script>
    /**
     * 操作style样式时:
     *     1. 属性用驼峰命名法
     *  2. DOM操作修改行内样式,行内样式权重更高
     * */
        var div = document.querySelector("div");
        div.onclick = function() {
            div.style.backgroundColor = "red";
        }
    </script>
    <style>
        div {
            width: 100px;
            height: 100px;
            background-color: aqua;
        }
    </style>

    点击前:点击后:

     点击修改class:

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title></title>
        </head>
        <body>
            <div>div</div>
        </body>
        <script type="text/javascript">
            var div = document.querySelector("div");
            div.onclick = function(){
                /**
                 * class是关键字,所以用className改变类,并会覆盖原来的类名
                 * 如果想保留原来的类名,则用this.className = "firstClass change";
                 * */
                // div.className = "change";
                this.className = "change";
            }
        </script>
        
        <style type="text/css">
            .change{
                background-color: #008000;
                font-size: large;
                font-weight: 700;
                color: white;
            }
        </style>
    </html>

     点击前:点击后:

     4. 事件对象

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title></title>
        </head>
        <body>
            <div>div</div>
        </body>
        <script type="text/javascript">
            var div = document.querySelector("div");
            div.onclick = function(event){
                // 1. event就是一个事件对象,写到我们侦听函数的小括号里,当形参来看
                // 2. 事件对象有了事件才会存在,是系统自动创建的,我们不需要自己传递参数
                // 3. 事件对象 是我们事件的一系列相关数据的集合,跟事件相关的。
                // 比如鼠标点击就包含了鼠标的相关信息,比如鼠标坐标
                //键盘事件就包括了键盘事件的信息,比如判断用户按下了哪个键
                // 4. 事件对象可以自己命名,如event, evt, e
                console.log(event);
                //event.target 点击了哪个元素,就返回哪个元素
                //this 绑定了哪个元素,就返回哪个元素
                console.log(event.target);
            }
            
            //这里和上面等价
            // div.addEventListener("click",function(e){
            //     console.log(e);
            // })
        </script>
    </html>

     事件委托:巧妙利用事件冒泡。

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title></title>
        </head>
        <body>
            <ul>
                <li>9</li>
                <li>8</li>
                <li>7</li>
                <li>6</li>
                <li>5</li>
                <li>4</li>
                <li>3</li>
                <li>2</li>
                <li>1</li>
            </ul>
        </body>
        <script type="text/javascript">
        /**
         * 事件委托的核心:给父节点添加侦听器,利用事件冒泡影响每一个子节点
         * addEventListener("name", function(){}, true/false) 
         * 第三个参数为false或者省略是冒泡阶段
         * 第三个参数为true是捕获阶段
         * */
            var ul = document.querySelector("ul");
            ul.addEventListener("click",function(e){
                console.log(e);
                console.log("我是li冒泡到ul的事件");
            })
        </script>
        <style type="text/css">
        ul{
            background-color: yellow;
            padding: 20px;
        }
            li{
                display: inline-block;
                padding: 10px;
                background-color: red;
            }
        </style>
    </html>

     

  • 相关阅读:
    python 通过*.cer *..pfx 获取公钥私钥
    python 交集 并集 差集
    python3 RSA加密、解密、签名
    Go 入门
    ansible入门篇一
    ACM/ICPC 之 两道dijkstra练习题(ZOJ1053(POJ1122)-ZOJ1053)
    数学软件 之 基于MATLAB的DFP算法
    ACM/ICPC 之 最短路径-dijkstra范例(ZOJ2750-POJ1135(ZOJ1298))
    ACM/ICPC 之 判别MST唯一性-Kruskal解法(POJ1679)
    ACM/ICPC 之 四道MST-Prim解法(POJ1258-POJ1751-POJ2349-POJ3026)
  • 原文地址:https://www.cnblogs.com/sunshine233/p/15624090.html
Copyright © 2020-2023  润新知