美文网首页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" 表示页面加载时默认的选项
     */

相关文章

  • DOM常用API

    Javascript操作DOM常用API总结 文本整理了javascript操作DOM的一些常用的api,根据其作...

  • JavaScript常用API合集

    JavaScript常用API合集 本文分享了一些JavaScript常用的代码,有DOM操作、CSS操作、对象(...

  • dom

    Javascript操作DOM常用API总结 Posted on 2015-11-30 | In Ja...

  • DOM (javascript DOM节点操作)

    DOM (javascript DOM节点操作) 本节目录 查找DOM元素 DOM节点操作 javascript操...

  • JavaScript DOM常用操作

    JavaScript的DOM操作主要包括: 更新:更新该DOM节点的内容,相当于更新了该DOM节点表示的HTML的...

  • javaScript:DOM常用操作

    1. 元素选择 2. 创建节点 3.节点关系 4. 属性操作 5. 表单操作

  • javascript 常用DOM操作整理

    1.选取了DOM操作中实用并常用的部分,省略了实用但有明显兼容性的部分2.DOM属性和方法的类型归属可能并不完全准...

  • javascript 常用DOM操作整理

    1.抽取了DOM操作中常用的部分 2.DOM属性和方法的对象归属可能并不完全准确 3.某些兼容性和特点做了标识(绝...

  • [JavaScript] (Day-18) - 操作表单

    用 JavaScript 操作表单和操作DOM是类似的,因为表单本身也是 DOM 树 用 JavaScript 来...

  • js归纳总结——各种思维导图

    javascript DOM操作 javascript windows对象 javascript变量 javasc...

网友评论

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

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