美文网首页JavaScript 进阶营
javaScript:DOM常用操作

javaScript:DOM常用操作

作者: 远方的橄榄树 | 来源:发表于2019-10-30 14:48 被阅读0次
    能力越大,责任越大

    1. 元素选择

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <div id="div1"><p>Hello, World!</p></div>
    <p>颜色列表</p>
    <ul id="colors">
        <li class="color">红色</li>
        <li class="color">蓝色</li>
        <li class="color">黑色</li>
    </ul>
    <br>
    <p>动物列表</p>
    <ul id="animals">
        <li class="dog">狗</li>
        <li class="cat">猫</li>
        <li class="alpaca">羊驼</li>
    </ul>
    </body>
    </html>
    
        // 1.根据id查找元素
        var div1 = document.getElementById("div1");
        console.log(div1.innerText); // Hello, World!
    
        // 2.根据class对象查找元素,结果为Node数组
        var colors = document.getElementsByClassName("color");
        for (var i = 0; i < colors.length; i++) { // 遍历节点
            console.log(colors.item(i).innerText); // 红色、蓝色、黑色
        }
    
        // 3.根据标签名查找元素,返回Node数组
        var lis = document.getElementsByTagName("li");
        console.log(lis.length); // 6
    
        //4.选择器,返回一个节点
        var alpaca = document.querySelector("#animals .alpaca");
        console.log(alpaca.innerText); // 羊驼
    
        // 5.选择器,返回一个或多个节点
        colors = document.querySelectorAll("#colors .color");
        console.log(colors.length); // 3
    

    2. 创建节点

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <div style="width: 200px; color: gray; background: cyan"
         id="div1">
        <p><strong>嘿咻、嘿咻!!!</strong></p>
    </div>
    </body>
    <style>
        .new-div {
            width: 200px;
            background: pink;
            color: gray;
        }
    </style>
    </html>
    
        var div = document.createElement("div"); // 创建一个新节点
        div.id = "div2"; // id
        div.className = "new-div"; // class
        div.innerHTML = "<p><strong>阿珍爱上了阿强</strong></p>";
        document.body.appendChild(div); // 添加到body标签内
    
        var textNode = document.createTextNode("在一个没有星星的夜晚~"); // 添加文本节点
        div.appendChild(textNode);
    

    3.节点关系

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <div id="role">
        <p id="akali">阿卡丽</p>
        <p id="jax">贾克斯</p>
        <p id="yi">剑圣</p>
        <p id="temmo">提莫</p>
        <p id="nunu">努努</p>
    </div>
    </body>
    </html>
    
        var div = document.getElementById("role");
        var children = div.childNodes;
        console.log(children.length); //11 史前巨坑:5个p标签和6个nodeValue为""的文本节点
    
        for (var i = 1; i < children.length; i += 2) { // 遍历p标签
            console.log(children[i].innerText); // 阿卡丽、贾克斯、剑圣、提莫、努努
        }
    
        var akali = children.item(1);
        console.log(akali.textContent); // 阿卡丽
    
        var jax = akali.nextSibling.nextSibling; // nextSibling返回下一个节点
        console.log(jax.textContent); // 贾克斯
    
        var jax2 = akali.nextElementSibling; // 返回元素的下一个兄弟元素节点
        console.log(jax2.textContent); // 贾克斯
    
        var p1 = document.createElement("p");
        p1.id = "annie";
        p1.innerText = "安妮";
        div.appendChild(p1); // 添加子元素
    
        var p2 = document.createElement("p");
        p2.id = "kayle";
        p2.innerText = "凯尔";
        div.insertBefore(p2, jax); // 插入子元素
    

    4. 属性操作

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <input type="text" id="username" class="username" placeholder="请输入名称" 
            data-tip="sky">
    <div style="width: 200px; background: beige; color: fuchsia; margin-top: 5px" 
            id="div1">
        <p>窗前明月光,疑是地上霜。</p>
    </div>
    </body>
    </html>
    
        var username = document.getElementById("username");
    
        //获取属性
        console.log(username);
        console.log(username.id);
        console.log(username.className);
        console.log(username.placeholder);
        // console.log(name.data-tip); error
    
        //修改属性
        username.id = "nickname";
        username.className = "nickname";
        username.placeholder = "请输入昵称";
        // username.data-tip = "sea"; // error
    
        //获取和设置属性
        console.log(username.getAttribute("data-tip")); // sky
        username.setAttribute("data-tip", "sea"); // correct
    
        //attributes属性
        var attrs = username.attributes; // NameNodeMap
        var tip1 = attrs.getNamedItem("data-tip").nodeValue; // sea
        var tip2 = attrs["data-tip"].nodeValue; // sea
        console.log(tip1);
        console.log(tip2);
    
        //修改css样式
        var div1 = document.getElementById("div1");
        div1.onclick = function (ev) {
            div1.style.fontSize = "24px";
            div1.style.color = "black";
            div1.style.border = "1px solid blue";
        }
    

    5. 表单操作

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <form id="userForm" name="userForm" action="demo2.html" method="get" onsubmit="return check()">
        用户名:<input id="username" type="text" name="username" placeholder="请输入用户名"><br/>
        密码:<input type="password" name="password"><br/>
        昵称:<input id="nickname" type="text" name="nickname" value="大名鼎鼎"><br>
        性别:男<input type="radio" name="gender" value="男">&nbsp;&nbsp;
        女<input type="radio" name="gender" value="女"><br/>
    
        宠物:狗<input type="checkbox" name="pet" value="dog">
        猫<input type="checkbox" name="pet" value="cat">
        熊<input type="checkbox" name="pet" value="bear"><br/>
    
        城市<select id="city" name="city">
        <option value="1">广州</option>
        <option value="2" selected="selected">东莞</option>
        <option value="3">深圳</option>
        <option value="4">中山</option>
        </select><br/>
    
        <input type="submit" value="注册">
        <input type="reset" value="重置">
    </form>
    <button id="submitBtn">提交表单</button><br>
    <button id="selectBtn">选择框测试</button>
    </body>
    </html>
    
        var userForm = document.userForm; // 获取表单
    
        var username = userForm.username; // 获取username元素
        console.log(username.placeholder); // 请输入用户名
    
        var nickname = userForm["nickname"]; // 获取nickname元素
        console.log(nickname.value); // 大名鼎鼎
    
        //获取表单对象属性
        console.log(userForm.method); // get
    
        // 提交表单
        var submitBtn = document.getElementById("submitBtn");
        submitBtn.onclick = function (ev) {
            userForm.submit();
        };
    
        //检测表单是否可提交,只有点击“注册”按钮才会生效,
        // 点击“submitBtn”按钮不会做表单验证
        function check() {
            return username.value != null && username.value !== ""
            && username.value.indexOf(" ") !== 1; // username为空或有空格不能提交
        }
    
        //测试选择框
        var selectBtn = document.getElementById("selectBtn");
        selectBtn.onclick = function (ev) {
            var sel = userForm.city;
            console.log("选择框测试:");
            console.log(sel.value); // 等于选中的option的value
            console.log(sel.selectedIndex); // 选中的option的索引
            // console.log(sel.options);
    
            var opt = sel[sel.selectedIndex];
            console.log(opt.value);
            console.log(opt.innerText);
        };
    
        /**
         * 从其他地方摘抄过来的:
         *  1.readonly
         *      1)input对象 设置了readonly="readonly",则该表单域只读(
         *         用户不能修改其value属性),但是可以提交
         *      2)通过js为input对象添加“只读”属性,应通过“对象.readOnly = true”添加
         *      3)readonly="readonly" 只能使用在<input type='text'> 及 <textaread>标签中
         *  2.disabled
         *      1)input对象 设置了disabled="disabled",则该表单域不可用(
         *        用户不能修改其value属性)且不能提交
         *      2)通过js为input对象添加“不可用”属性,应通过“对象.disabled = true”添加
         *      3)disabled="disabled"可以将所有的表单域失效
         *  3.name
         *      1)用于获取该表单域
         *      2)只有设置了name属性的表单域才可以提交
         *  4.value
         *      1)用户输入的内容就是value,表单会提交该属性的值
         *      2)select标签的value值就是当前选中的option的value值
         *      3)textarea没有value属性,提交时提交标签中间的文本值
         *  5.form
         *      用于获取表单域所在的表单对象
         *  6.type
         *      浏览会根据type的值不同,显示表单域也不同
         *  7.checked
         *      1)对于<input type="radio"> 和 <input type="checkbox">来讲
         *        ,checked="checked"表示默认选中该选项
         *      2)<input type="radio"> 只能给同组的一个添加 checked="checked"
         *      3)<input type="checkbox"> 可以给同组的所有添加 checked="checked"
         *      4)通过js为对象添加“默认选中”属性,应通过“对象.checked = true”添加
         *  8.select标签的属性
         *      1)selectedIndex表示当前选中的option的索引
         *      2)options表示所有option标签对象的一个数组
         *      3)length表示右多少个下拉列表项
         *  9.option标签的属性
         *      1)value 就是选项的值,提交时会提交该属性的值
         *      2)text 就是option标签中间文本值,类似于innerText
         *      3)selected="selected" 表示页面加载时默认的选项
         */
    

    相关文章

      网友评论

        本文标题:javaScript:DOM常用操作

        本文链接:https://www.haomeiwen.com/subject/tvlovctx.html