DOM案例

一.什么是DOM

DOM(Document Object Model)文档对象模型的树形结构   说白了就是用js操作网页

使用方法:

        1.找到对象

        2.操作   操作网页 节点属性 改变网页内容....

文档对象模型就是一个树形结构,类似于家谱树

          html标签里面包裹了所有的文档内容。他是一个**父亲节点(parent)** 它没有父亲节点,也没有兄弟节点,我们称html标签为树根,也就是**根节点**,整个html表示整个文档。

          在html节点内部通常有两个同级节点head和body,html是head的父亲节点,html也是body的父亲节点,他们同一层级并且相互不包含,我们称同属于同一个父亲的节点为**兄弟节点**,而head和body都是html的**子节点**。这样一层一层的关系就是**节点树**。各个标签在页面中都是**元素节点(element node)**

节点(node)的种类

    元素节点(element node)

            文档对象模型中的标签就是最基本的元素节点。它们层层嵌套形参整个页面。内部可能包含了文本和属性

    文本节点(text node)

            我们称DOM内的文本为文本节点。文本节点有的被包含在元素节点中的,比如p标签内部的文字。但是有的元素节点没有文本节点,

    属性节点(attribute node)

            属性节点从属于元素。比如<input type='radio'>其中type='radio'是元素节点p的属性节点。不是所有的元素都有属性节点,但是所有的属性节点都必然属于某一个元素。如:class/id/style

二.通过DOM获取元素的方式

1.document.getElementById //通过ID获取某个元素,所有浏览器兼容

2.document.getElementsByClassName //通过class类名获取,获取是一组,不支持IE8及以下

3.document.getElementsByTagName //通过标签名获取,获取是一组,所有浏览器兼容

4. document.getElementsByName //通过name获取,获取是一组,很少用,所有浏览器兼容

案例

一.实现切换图片

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <img src="../../img/1.jpg" alt="" id="pic" width="500" height="500">

    <button id="up">上一张</button>
    <button id="down">下一张</button>

    <script>
        let pic=document.getElementById('pic')
        let up=document.getElementById('up')
        let down=document.getElementById('down')

        let max_pic=5,min_pic=1
        let now_pic=min_pic
        
        //下一张
        down.onclick=function(){
            if(now_pic==max_pic){
                now_pic=min_pic
            }
            else{
                now_pic++
            }
            pic.src=`../../img/${now_pic}.jpg`
        }

        //上一张
        up.onclick=function(){
            if(now_pic==min_pic){
                now_pic=max_pic
            }
            else{
                now_pic--
            }
            pic.src=`../../img/${now_pic}.jpg`
        }
        
    </script>
</body>
</html>

二.鼠标悬浮案例

三.当鼠标移动至小图片时实现切换图片

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
   
        *{
            padding: 0;
            margin: 0;
        }
        ul,li{
            list-style: none;

            
        }
        li{
            float: left;
        }
        .smallPic{
            width: 100px;
            height: 100px;
            margin: 5px;
            
        }
        .active{
            border: 3px solid #99008288;
        }
    </style>
</head>
<body>
    
    <img class="bigPic" src="../../img/img5.jpg" alt="" width="500" height="500">
    <ul>
        <li class="active"><img class="smallPic" src="../../img/img5.jpg" alt=""></li>
        <li><img class="smallPic" src="../../img/img6.jpg" alt=""></li>
        <li><img class="smallPic" src="../../img/img7.jpg" alt=""></li>
        <li><img class="smallPic" src="../../img/img8.jpg" alt=""></li>
        <li><img class="smallPic" src="../../img/img9.jpg" alt=""></li>
    </ul>

    <script>
        let bigPic=document.getElementsByClassName('bigPic')[0]
        let smallPic=document.getElementsByClassName('smallPic')

        for(let i=0;i<smallPic.length;i++){
            smallPic[i].onmouseover=function(){

                for(let j=0;j<smallPic.length;j++){
                      smallPic[j].parentNode.className=''
                }

                bigPic.src=this.src
                this.parentNode.className='active'
            } 
        }
    </script>
</body>
</html>

四.定时器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <button id="btn">多喝热水</button>

    <script>
       
        let btn=document.getElementById('btn')
        btn.onclick=function(){
            setTimeout(() => {
                alert('干杯')
            }, 1000);
        }


    </script>
</body>
</html>

五.图片自动切换

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <img src="../../img/1.jpg" alt="" id="pic" width="500" height="500">

    <button id="up">上一张</button>
    <button id="down">下一张</button>

    <script>
        let pic=document.getElementById('pic')
        let up=document.getElementById('up')
        let down=document.getElementById('down')

        let max_pic=5,min_pic=1
        let now_pic=min_pic
        
        //下一张
        down.onclick=function(){
            if(now_pic==max_pic){
                now_pic=min_pic
            }
            else{
                now_pic++
            }
            pic.src=`../../img/${now_pic}.jpg`
        }

        //上一张
        up.onclick=function(){
            if(now_pic==min_pic){
                now_pic=max_pic
            }
            else{
                now_pic--
            }
            pic.src=`../../img/${now_pic}.jpg`
        }


       

        setInterval(down.onclick,1000)
    </script>

</body>
</html>

六.自动跳转

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        span{
            color: #6cf;
            font-size:30px;
        }
    </style>
</head>
<body>
    <a href="https://www.zol.com.cn/">点击成功 <span>5</span> 秒后跳转到中关村首页</a>

    <script>
        let a =document.getElementsByTagName('a')[0]
        let sec=5

        time=setInterval(function(){
            sec--
            a.innerHTML=`点击成功 <span>${sec}</span> 秒后跳转到中关村首页`
            if(sec==0){
                clearInterval(time)   //关闭触发器
                location.href='https://www.zol.com.cn/' 
                //location对象是用来保存/跳转url 到点自动跳转
            }
        },1000)
    </script>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值