1.什么是DOM
DOM:Document Object Model(文档对象模型)

 

 2.节点和节点的关系

 

 

 3.访问节点

1)使用getElement系列方法访问指定节点
getElementById() getElementsByName() getElementsByTagName()
2)根据层次关系访问节点

4.节点属性

parentNode  返回节点的父节点
childNodes   返回子节点集合,childNodes[i]
firstChild       返回节点的第一个子节点,最普遍的用法是访问该元素的文本节点
lastChild       返回节点的最后一个子节点
nextSibling   下一个节点
previousSibling 上一个节点

 
5.Element属性
firstElementChild   返回节点的第一个子节点
lastElementChild   返回节点的最后一个子节点
nextElementSibling  下一个节点
previousElementSibling   上一个节点

oNext = oParent.nextElementSibling || oParent.nextSibling   
oPre = oParent.previousElementSibling || oParent.previousSibling  
oFirst = oParent. firstElementChild  ||  oParent.firstChild   
oLast = oParent.lastElementChild || oParent.lastChild 
6.节点信息
1.nodeName:节点名称
元素节点显示标签名称
属性节点显示属性名称
文本节点显示#text
文档节点显示#document
2.nodeValue:节点值
显示对应的节点的值
3.nodeType :节点类型
 
节点类型
NodeType值
元素element
1
属性attr
2
文本text
3
注释comments
8
文档document
9

 

7.操作节点的属性
getAttribute("属性名")
setAttribute("属性名","属性值")
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>
            <style>
                img{
                    align-content: center;
                }
                button{
                    margin-bottom: 10px;
                }
            </style>
        </title>
    </head>
    <body>
        <img src="4lkvx21fjro3sjq992f5tlb6z.jpg" id="pic" alt="哈哈" /><br />
        <button onclick="fun()">修改图片</button>
        <script>
            function fun(){
                var pic = document.getElementById("pic");
                pic.setAttribute("src","3idlmlgkhszuqgrtccvfu30go.jpg");
                pic.setAttribute("alt","");
            }
        </script>
    </body>
</html>

 

8.创建和插入节点
createElement(tgName)     创建一个标签为tagName的新元素
A.appendChild(B)         把B节点追加至A节点的末尾
insertBefore(A,B)     把A节点插入到B节点之前
cloneNode(deep)   复制某个指定节点
deep的值有true和false
true是复制本身加所有子节点
false是只复制自己本身
 
名称
描述
createElement( tagName)
创建一个标签名为tagName的新元素节点
A.appendChild( B)
把B节点追加至A节点的末尾
insertBefore( A,B )
把A节点插入到B节点之前
cloneNode(deep)
复制某个指定的节点
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        <ul id="list">
            <li>苹果</li>
            <li>香蕉</li>
            <li>橘子</li>
        </ul>
        <input type="text" name="" id="text" /><br />
        <button onclick="start()">第三个节点前插入</button>
        <button onclick="end()">结尾位置插入</button>
        <button onclick="copy()">复制第一个节点</button>
        <script>
            var oInput=document.getElementById("text");
            var oList=document.getElementById("list");
            var ListEnd=oList.lastElementChild || oList.lastChild;
            function start(){
                console.log(oInput.value!="");
                console.log(ListEnd);
                var nodeLi=document.createElement("li");
                if(oInput.value!=""){
                    nodeLi.innerHTML = oInput.value;
                    oInput.value="";
                    oList.insertBefore(nodeLi,ListEnd)
                }
            }
            function end(){
                var nodeLi=document.createElement("li");
                if(oInput.value!=""){
                    nodeLi.innerHTML=oInput.value;
                    oInput.value="";
                    oList.appendChild(nodeLi)
                }
            }
            function copy(){
                var firstNode=oList.firstElementChild||oList.firstChild;
                var copy=firstNode.cloneNode(true);
                oList.appendChild(copy)
            }
        </script>
    </body>
</html>

 

firstChild和firstElementChild的区别?

 

它们的共同点都是获取父节点下第一个节点对象。

 

但是firstElementChild只会获取元素节点对象,从名称就可以看出来,firstChild则可以获取文本节点对象(当然也可以获取元素节点对象)

 
9.删除和替换节点
 
名称
描述
removeChild( node)
删除指定的节点
replaceChild( newNode, oldNode)
用其他的节点替换指定的节点
 
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        <ul>
            <li>
                <img src="img/4lkvx21fjro3sjq992f5tlb6z.jpg" id="first" />
                <p><input type="button" value="删除图片" onclick="del()"></p>
            </li>
            <li>
                <img src="img/3idlmlgkhszuqgrtccvfu30go.jpg" id="second" />
                <p><input type="button" value="换张图片" onclick="change()"></p>
            </li>
        </ul>
        <script>
            function del(){
                var delNode=document.getElementById("first");
                delNode.parentNode.removeChild(delNode);
            }
            function change(){
                var oldNode=document.getElementById("second");
                var newNode=document.createElement("img");
                newNode.setAttribute("src","img/69pk75euhgyxylafde4zmc0u9.jpg");
                oldNode.parentNode.replaceChild(newNode,oldNode);
            }
        </script>
    </body>
</html>

 

10. 操作节点样式
改变样式的属性
①改变style属性
语法:HTML元素.style.样式属性="值"
style属性:
类别
属性
背景
backgroundColor、backgroundImage、backgroundRepeat
文本
fontSize、fontWeight、textAlign、textDecoration、font、color
边距
padding、paddingTop 、paddingBottom、paddingLeft、paddingRight
边框
border、borderTop、borderBottom、borderLeft、borderRight
style事件:

名称

描述

onclick

当用户单击某个对象时调用事件

onmouseover

鼠标移到某元素之上

onmouseout

鼠标从某元素移开

onmousedown

鼠标按钮被按下

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>隔行变色</title>
    <style>
        * {
            padding: 0;
            margin: 0;
            text-align: center;
        }

        .wrap {
            width: 500px;
            margin: 10px auto 0;
        }

        table {
            border-collapse: collapse;
            border-spacing: 0;
            border: 1px solid #c0c0c0;
            width: 500px;
        }

        th,
        td {
            border: 1px solid #d0d0d0;
            color: #404060;
            padding: 10px;
        }

        th {
            background-color: #09c;
            font: bold 16px "微软雅黑";
            color: #fff;
        }

        td {
            font: 14px "微软雅黑";
        }

        tbody tr {
            background-color: #f0f0f0;
            cursor: pointer;;
        }
        
        .current {
            background-color: red!important;
        }
    </style>

    <script>
        window.onload = function () {
            var wrap = document.getElementById("wrap");
            var table = wrap.firstElementChild || wrap.firstChild;
            var tbody = table.lastElementChild || table.lastChild;
            var trArr = tbody.children;
            for(var i=0;i<trArr.length;i++){
                if(i%2==0){
                    trArr[i].style.backgroundColor = "#ccc";
                }else{
                    trArr[i].style.backgroundColor = "#c0c0c0";
                }
            }
            var color="";
            for(var i=0;i<trArr.length;i++){
                trArr[i].onmouseover=function(){
                    color =this.style.backgroundColor;
                    this.style.backgroundColor="#fff";
                }
                trArr[i].onmouseout=function(){
                    this.style.backgroundColor=color;
                }
            }
        }
    </script>

</head>
<body>
<div class="wrap" id="wrap">
    <table>
        <thead>
            <tr>
                <th>序号</th>
                <th>姓名</th>
                <th>课程</th>
                <th>成绩</th>
            </tr>
        </thead>
        <tbody id="target">
            <tr>
                <td>
                    1
                </td>
                <td>小环</td>
                <td>语文</td>
                <td>80</td>
            </tr>
            <tr>
                <td>
                    2
                </td>
                <td>大明</td>
                <td>日语</td>
                <td>90</td>
            </tr>
            <tr>
                <td>
                    3
                </td>
                <td>小溪</td>
                <td>数据结构</td>
                <td>86</td>
            </tr>
            <tr>
                <td>
                    4
                </td>
                <td>吕尚</td>
                <td>数学</td>
                <td>99</td>
            </tr>
            <tr>
                <td>
                    5
                </td>
                <td>小雉</td>
                <td>英语</td>
                <td>70</td>
            </tr>
            <tr>
                <td>
                    6
                </td>
                <td>小超</td>
                <td>体育</td>
                <td>100</td>
            </tr>
        </tbody>
    </table>
</div>


</body>
</html>

 

②改变className属性
语法:HTML元素.className="样式名称"
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>我的购物车</title>
    <link rel="stylesheet" href="css/shopping.css">
</head>
<body>
<section id="shopping">
    <div id="cart" onmouseover="over()" onmouseout="out()">我的购物车<span>1</span></div>
    <div id="cartList">
        <h2>最新加入的商品</h2>
        <ul>
            <li><img src="images/makeup.jpg"></li>
            <li>倩碧经典三部曲套装(液体皂200ml+明肌2号水200ml+润肤乳125ml)</li>
            <li>¥558.00×1<br/>删除</li>
        </ul>
        <div class="footer">共1件商品<span>共计¥558.00</span> <span>去购物车</span></div>
    </div>
</section>
<script>
    function over(){
        document.getElementById("cart").className="cartOver";
        document.getElementById("cartList").className="cartListOver";
    }
    function out(){
        document.getElementById("cart").className="cartOut";
        document.getElementById("cartList").className="cartListOut";
    }
</script>
</body>

 

11. 获取元素的样式
①语法:HTML元素.style.样式属性;
示例:
alert(document.getElementById("cartList").display);
语法:document.defaultView.getComputedStyle(元素,null).属性;
示例:
var cartList=document.getElementById("cartList");
alert(document.defaultView.getComputedStyle(cartList,null).display);
②语法:HTML元素. currentStyle.样式属性;
示例:
alert(document.getElementById("cartList").currentStyle.display);  【兼容IE浏览器】
12.获取元素位置:
    元素属性应用:
属性
描述
offsetLeft
返回当前元素左边界到它上级元素的左边界的距离,只读属性
offsetTop
返回当前元素上边界到它上级元素的上边界的距离,只读属性
offsetHeight
返回元素的高度
offsetWidth
返回元素的宽度
offsetParent
返回元素的偏移容器,即对最近的动态定位的包含元素的引用
scrollTop
返回匹配元素的滚动条的垂直位置
scrollLeft
返回匹配元素的滚动条的水平位置
clientWidth
返回元素的可见宽度
clientHeight
返回元素的可见高度

 
语法:
document.documentElement.scrollTop;
document.documentElement.scrollLeft;
【标准浏览器】
或者
document.body.scrollTop;
document.body.scrollLeft;
【Chrome】
为了兼容性:
var sTop=document.documentElement.scrollTop   ||    document.body.scrollTop;

 
 

 

 


 posted on 2020-06-18 17:24  中国姑娘F  阅读(131)  评论(0编辑  收藏  举报