BOM、DOM模型

一、DOM

1.1概述

·通过HTML DOM,可访问JavaScript HTML文档的所有元素。

·当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)

·HTML模型被构造为对象的树

·有了DOM树,就可以通过树来查找节点(元素),找到元素就可以对元素进行操作(修改、删除、添加),还可以操作元素的样式

        ~JavaScript能够改变页面中的所有HTML元素。

        ~JavaScript能够改变页面中的所有HTML属性。

        ~JavaScript能够改变页面中的所有CSS样式。

        ~JavaScript能够对页面中的所有的事件做出反应。

1.1查找元素

查找元素(标签)有很多方式

~通过id查找元素

        ·document.getElementByld(“id属性值”);

        ·如果找到该元素,则该方法将以对象(在x中)的形式返回该元素。

        ·如果未找到该元素,则x将包含null。

~通过标签名查找元素

        ·方法:getElementsByTagName(“合法的元素名”);

        ·如果找到,返回的是数组。

~通过class查找元素

        ·方法:getElementsByClassName(“class属性的值”);

        ·如果找到,返回的是数组。

<!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>
    <ul>
        <li id="li-1" class="class-3">西瓜</li>
        <li>草莓</li>
        <li>葡萄</li>
        <li>芒果</li>
    </ul>
    <div class="class-3">开</div>
    <span class="class-3">心</span>
    <hr/>
    <button id="btn-1">根据id查找</button>
    <button id="btn-2">根据标签名查找</button>
    <button id="btn-3">根据class查找</button>


    <script>
        var btn1=document.getElementById("btn-1");
        btn1.onclick=function(){
         //通过id查找
         var li1=document.getElementById("li-1");
         console.log(li1);
        }
        
        var btn2=document.getElementById("btn-2");
        btn2.onclick=function(){
         //标签名,返回的是同名所有标签的数组
         var liArr=document.getElementsByTagName("li");
         console.log(liArr);
         for(var i=0;i<liArr.length;i++){
            console.log(liArr[i]);
        }
        }
        
        //class
        var btn3=document.getElementById("btn-3");
        btn3.onclick=function(){
         //类名,返回的是同类名所有标签的数组
         var abc=document.getElementsByClassName("class-3");
         console.log(abc);
         for(var i=0;i<abc.length;i++){
            console.log(abc[i]);
        }
        }
        
    </script>
</body>
</html>

1.3元素内容的查找和设置

元素内容,是指标签开闭之间的内容(单标签用不成)。

<p>这就是内容</p>

<p><span>这就是内容</span></p>

查找和设置使用的是相同的属性

        ~innerHTML获得或设置标签的内容

        ~innerText获得或设置标签的内容

<!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>
    <!-- <p id="p-1">p的内容</p> -->
    <p id="p-1">
        <span>p的内容</span>
    </p>
    <hr/>
    <button id="btn-1">获得内容-innerHTML</button>
    <button id="btn-2">获得内容-innerText</button>
    <script>
        var btn1=document.getElementById("btn-1");
        var p1=document.getElementById("p-1");
        btn1.onclick=function(){
            var v=p1.innerHTML;
            console.log(v);
        }
        var btn2=document.getElementById("btn-2");
        btn2.onclick=function(){
            var v=p1.innerText;
            console.log(v);
        }
    </script>
</body>
</html>

上述代码结合下边的图片,我们可以知道innerHTML和innerText的区别

         * innerHTML

         * 能获得开闭标签之前的内容,包括html标签

         *能在开闭标签之间设置内容,有标签会解析

         * innerText

         * 只能获得开闭标签之间的纯文本内容

         *能在开闭之间设置内容,有标签也当字符串展现,不当标签

         *============================================

         *二者设置内容的共性:直接覆盖原值

<script>
var btn3=document.getElementById("btn-3");
        btn3.onclick=function(){
            //设置内容无返回值
            p1.innerHTML="<span>这是新的内容!!!</span>";
        }
        var btn4=document.getElementById("btn-4");
        btn4.onclick=function(){
            //设置内容无返回值
            p1.innerText="<span>这是新的内容!!!</span>";
        }
</script>

上边可以看出,设置内容时innerHTML把span当作标签,innerText在这里只是把它当成文本内容

1.4元素属性的查找和设置

元素属性,是指开标签内的属性,通过dom对象直接调用操作。

eg,

·domObj.id

·domObj.name

·domObj.value

·...

<!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>
    <a id="a-1" href="http://www.baidu.com" target="_self">超链接</a>
    <hr/>
    <button id="btn-1">获得a标签的属性</button>
    <button id="btn-2">设置a标签的属性</button>
    <script>
        var btn1=document.getElementById("btn-1");
        btn1.onclick=function(){
            var a1=document.getElementById("a-1");
            /**
             *获得标签的属性,直接通过标签对象.属性名即可
            */
           var id=a1.id;
           var href=a1.href;
           var target=a1.target;
           console.log(id);
           console.log(href);
           console.log(target);
        }


        var btn2=document.getElementById("btn-2");
        btn2.onclick=function(){
            var a1=document.getElementById("a-1");
            /**
             *设置标签的属性,直接通过标签对象.属性名=值即可
            */
           a1.href="http://www.4399.com";
           a1.target="_blank";
        }
    </script>
</body>
</html>

1.5元素CSS样式的查找和设置

元素css样式的查找和设置,是指标签中的style的属性值的获得和设置

·获得属性值

        元素对象.style.属性

·设置属性值

        元素对象.style.属性=""

<!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>
    <div id="div-1" style="background-color: red;">块</div>
    <hr/>
    <button id="btn-1">获得div的css样式</button>
    <button id="btn-2">设置div的css样式</button>
    <script>
        var btn1=document.getElementById("btn-1");
        var div=document.getElementById("div-1");
        btn1.onclick=function(){
            //获得所有样式
            var style=div.style
            console.log(style);
            //获得指定的样式
            var bgc=div.style.backgroundColor;//单独获得背景颜色
            console.log(bgc);
        }
        var btn2=document.getElementById("btn-2");
        btn2.onclick=function(){
            //设置单独的样式
            div.style.backgroundColor="green";

            //设置样式
            div.style="background-color:yellow;width:50px;height:50px";
        }
    </script>
</body>
</html>

二、BOM-location

·表示当前浏览器的链接地址

·可以读取地址

·可以修改地址

<!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-1">获得location信息</button>
    <button id="btn-2">设置location信息</button>
    <script>
        var btn1=document.getElementById("btn-1")
        btn1.onclick=function(){
            var location=window.location;
            console.log(location);
        }

        var btn2=document.getElementById("btn-2")
        btn2.onclick=function(){
            //重点!!!
            //改变当前页面跳转的指定路径
            window.location.href="http://www.baidu.com";
        }
    </script>
</body>
</html>

  • 25
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值