定义

文档对象模型(Document Object Model)是一种用于HTML和XML文档的编程接口。

查找元素

1.直接查找

document.getElementById             根据ID获取一个标签
document.getElementsByName          根据name属性获取标签集合
document.getElementsByClassName     根据class属性获取标签集合
document.getElementsByTagName       根据标签名获取标签集合

练习:

<div id="i1">床前明月光,疑是地上霜</div>
    <a>111</a>
    <a>222</a>
    <a>333</a>
//获取ID
document.getElementById('i1')

//获取内容
document.getElementById('i1').innerText

//内容重新赋值
document.getElementById('i1').innerText = '举头望明月,低头思故乡'

//获取TagName('a')集合
document.getElementsByTagName('a')

//获取集合指定索引元素
document.getElementsByTagName('a')[1]

//对单个元素重新赋值
document.getElementsByTagName('a')[1].innerText = 666

2.间接查找

parentNode          // 父节点
childNodes          // 所有子节点
firstChild          // 第一个子节点
lastChild           // 最后一个子节点
nextSibling         // 下一个兄弟节点
previousSibling     // 上一个兄弟节点

parentElement           // 父节点标签元素
children                // 所有子标签
firstElementChild       // 第一个子标签元素
lastElementChild        // 最后一个子标签元素
nextElementtSibling     // 下一个兄弟标签元素
previousElementSibling  // 上一个兄弟标签元素

练习:

<div>
            <div>c1Sibling</div>
            <div>c1</div>
        </div>
        <div>
            <div>c2Sibling</div>
            <div id="i1">c2</div>
        </div>
        <div>
            <div>c3Sibling</div>
            <div>c3</div>
        </div>
 //获取ID
tag = document.getElementById('i1');

//获取ID的父亲
tag.parentElement

<div>
            <div>c2Sibling</div>
            <div id="i1">c2</div>
 </div>

//获取父亲的上一个兄弟
tag.parentElement.previousElementSibling

<div>
            <div>c1Sibling</div>
            <div>c1</div>
</div>

//获取父亲的上一个兄弟的第一个儿子
tag.parentElement.previousElementSibling.firstElementChild

<div>c1Sibling</div>

内容操作

(1)内容

innerText   文本
innerHTML   HTML内容(包括元素、注释和文本节点)
value 获取input/select/textarea里面输入的内容

(2)属性

attributes           获取所有标签属性
getAttribute()       获取指定标签属性
setAttribute()       设置指定标签属
removeAttribute()    移除指定标签属

class操作

对所有样式操作
className // 获取所有类名 classList.remove(class) // 删除指定类 classList.add(class) // 添加类

对单个样式操作
obj.style.fontSize='16px'
obj.style.backgroundColor='red'

事件

onmousecover    鼠标移到某元素之上
onmouseout      鼠标从某元素离开
onfocus         元素获得聚焦
onblur          元素失去焦点

实例

1.模态框(添加,全选,取消,反选)

功能:

(1)点击添加 -->弹出框输入内容-->点取消后,弹出框关闭

(2)全选,取消,反选

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style>

        .hide{
            display: none;
        }
        .c1{
            position: fixed;
            left: 0;
            top: 0;
            right: 0;
            bottom: 0;
            background-color: black;
            opscity:0.6;
        }
        .c2{
            width:500px;
            height: 400px;
            background-color: white;
            position: fixed;
            left: 50%;
            top: 50%;
            margin-left: -250px;
            margin-top: -200px;
            z-index: 10;
        }
    </style>
</head>
<body style="margin: 0;">
    <div>
        <input type="button" value="添加" onclick="ShowModel();">
        <input type="button" value="全选" onclick="ChooseAll()">
        <input type="button" value="取消" onclick="CancelAll()">
        <input type="button" value="反选" onclick="ReverseAll()">
        <table>
            <thread>
                <tr>
                    <th>选择</th>
                    <th>主机名</th>
                    <th>端口</th>
                </tr>
            </thread>
            <tbody id="tb">
                <tr>
                    <td>
                        <input type="checkbox">
                    </td>
                    <td>1.1.1.1</td>
                    <td>190</td>
                </tr>
                <tr>
                    <td><input type="checkbox"></td>
                    <td>1.1.1.2</td>
                    <td>192</td>
                </tr>
                <tr>
                    <td><input type="checkbox"></td>
                    <td>1.1.1.3</td>
                    <td>194</td>
                </tr>
            </tbody>
        </table>
    </div>

    <!--遮罩层-->
    <div id="i1" class="c1 hide"></div>

    <!--弹出框-->
    <div id="i2" class="c2 hide">
        <p><input type="text"></p>
        <p><input type="text"></p>
        <p>
            <input type="button" value="取消" onclick="HideModel();">
            <input type="button" value="确定">
        </p>
    </div>
    <script>
        function ShowModel() {
            document.getElementById('i1').classList.remove('hide');
            document.getElementById('i2').classList.remove('hide');
        }
        function HideModel() {
            document.getElementById('i1').classList.add('hide');
            document.getElementById('i2').classList.add('hide');
        }
        function ChooseAll() {
            var tbody = document.getElementById('tb');
            var tr_list = tbody.children;
            for(var i = 0;i < tr_list.length;i += 1){
                var current_tr = tr_list[i];
                var checkbox = current_tr.children[0].children[0];
                checkbox.checked = true;
            }

        }
        function CancelAll() {
            var tbody = document.getElementById('tb');
            var tr_list = tbody.children;
            for(var i = 0;i < tr_list.length;i += 1){
                var current_tr = tr_list[i];
                var checkbox = current_tr.children[0].children[0];
                checkbox.checked = false;
            }

        }
        function ReverseAll() {
            var tbody = document.getElementById('tb');
            //获取所有tr
            var tr_list = tbody.children;
            for(var i = 0;i < tr_list.length;i += 1){
                //循环所有的tr
                var current_tr = tr_list[i];
                //获取<input type="checkbox">
                var checkbox = current_tr.children[0].children[0];
                if(checkbox.checked){
                    checkbox.checked = false;
                }else{
                    checkbox.checked = true;
                }
            }

        }
    </script>

</body>
</html>

 2.后台管理页面布局

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style>
        body{
            margin: 0;
        }
        .left{
            float: left;
        }
        .pg-header{
            height: 48px;
            background-color: #2459a2;
            color:white;
            line-height: 48px;
        }
        .pg-header .logo{
            width:200px;
            background-color: cadetblue;
            text-align: center;
        }
        .pg-header .user{
            margin-right: 60px;
            padding: 0 20px;
            color: white;
            height: 48px;
            position: relative;
        }
        .pg-header .user:hover{
            background-color: #204982;
        }
        .pg-header .user .a img{
            height: 40px;
            width: 40px;
            margin-top: 4px;
            border-radius: 50%;
        }
        .pg-header .user .b{
            z-index: 20;
            position: absolute;
            top: 48px;
            right: 44px;
            background-color: white;
            color: black;
            width: 80px;
            display: none;
        }
        .pg-header .user:hover .b{
            display: block;
        }
        .pg-header .user .b a{
            display: block;
        }
        .right{
            float:right
        }
        .pg-content .menu{
            position:fixed;
            top:48px;
            left: 0;
            bottom: 0;
            right: 0;
            width: 200px;
            background-color: #dddddd;
        }
        .pg-content .content{
            position:fixed;
            top:48px;
            left: 200px;
            bottom: 0;
            right: 0;
            z-index: 9;
            background-color: purple;
            overflow: auto;
        }
    </style>
</head>
<body>
    <div class="pg-header">
        <div class="logo left">logo</div>
        <div class="user right">
            <a class="a img">登陆</a>
            <div class="b">
                <a>我的资料</a>
                <a>注销</a>
            </div>
        </div>
    </div>
    <div class="pg-content">
        <div class="menu left">目录</div>
        <div class="content left">内容</div>
    </div>
</body>
</html>

3.鼠标焦点

onfocus   获得焦点

onblur      失去焦点

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div style="width: 600px;margin: 0 auto;">
        <input id="i1" onfocus="Focus()" onblur="Blur()" type="text" value="请输入关键字" />
    </div>

    <script>
        function Focus() {
            var tag = document.getElementById('i1');
            var val = tag.value;
            if(val == "请输入关键字"){
                tag.value = ""
            }
        }
        function Blur() {
            var tag = document.getElementById('i1');
            var val = tag.value;
            if(val.length == 0){
                tag.value = "请输入关键字"
            }
        }
    </script>
</body>
</html>

4.创建标签

点“添加” 可以创建text输入框

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <input type="button" onclick="xxx()" value="添加">
    <div id="i1">
        <p><input type="text"></p>
    </div>
    <script>
        function xxx() {
             //创建标签
            //将标签添加到i1里面
            var tag=document.createElement("input");
            //添加属性
            tag.setAttribute("type","text");
            //设置样式
            tag.style.fontSize="16px";
            tag.style.border="1px solid red";
            var p=document.createElement("p");
            //把tag放到p里面
            p.append(tag);
            document.getElementById('i1').appendChild(p)
        }
    </script>
</body>
</html>

 5.鼠标高亮显示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <table border="1" width="300px">
        <tr>
            <td>1</td>
            <td>2</td>
            <td>3</td>
        </tr>
        <tr>
            <td>1</td>
            <td>2</td>
            <td>3</td>
        </tr>
        <tr>
            <td>1</td>
            <td>2</td>
            <td>3</td>
        </tr>
    </table>
    <script>
        var myTrs=document.getElementsByTagName('tr');
        for(var i=0; i < myTrs.length; i++){
            myTrs[i].onmousemove = function(){
                this.style.backgroundColor='red';
            }
            myTrs[i].onmouseout = function(){
                this.style.backgroundColor=""
            }
        }
    </script>
</body>
</html>
12-25 08:55