web技术性文档第一篇之DOM和BOM

家住魔仙堡 提交于 2020-01-03 23:58:14

DOM,Document Object Model的简称,文档对象模型。是一套规范文档内容的通用型标准。它是中立于平台和语言的接口,它允许程序脚本动态地访问和更新文档的内容,结构和样式。简单来说,dom就是一个对网页进行增删改查的操作。

 

HTML DOM 模型被构造为对象的树。

 

 

DOM查找

var elem=document.getElementById();//根据ID属性查找

var elem=document.getElementsByClassName();//根据class属性

var elem=document.getElementsByName()//根据name属性查找

var elem=document.getElementsByTagName()//根据标签名获取标签合集

 

使用CSS查找

var elem=document.querySelector();

//返回文档中匹配到指定的元素或CSS选择器的第1个对象的引用。

var elem=document.querySelectorAll();

//返回文档中匹配到指定的元素或CSS选择器的对象集合。

 

示例:

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Document</title>

    <style>

    #code{

        width: 100px;

        height: 50px;

        background-color: lightblue;

        font-size: 44px;

        letter-spacing: 5px;

    }

    </style>

</head>

<body>

    <script>

    function createRandCode(){

        var chars=['a','b','c','1','2','3'];

        var randcode="";

        for(var i=0;i<3;i++){//3位随机码

            var randpos =Math.floor(Math.random() * (chars.length-1));         

            randcode+= chars[randpos];

        }

        document.getElementById("code").innerHTML=randcode;

    }

    </script>

    <div id="code"></div>

    <button οnclick="createRandCode()">验证码</button>

</body>

</html>

DOM节点操作

原生节点对象,node

派生节点对象,parentNode,childNode

继承事件对象,EventTarget

继承节点对象

单个节点对象,有Document,DocumentType,Element,Attribute,Text,Comment,DocumentFragment7种

多个节点对象,有nodeList,HTMLCollection2种

 

1.获取节点

var divEle = document.createElement("div");

2.节点追加

somenode.appendChild(newnode);

3.插入一个节点

somenode.insertBefore(newnode,某个节点);

 

4.删除一个节点

somenode.replaceChild(newnode, 某个节点);

 

5.示例:替换页面元素

<!doctype html>

<html>

<head>

<meta charset="utf-8">

<title>替换页面元素</title>

</head>

<body>

       <div id="Odiv">

              <p id="p1">我是第一行内容</p>

              <p id="p2">我是第二行内容</p>

              <p id="p3">我是第三行内容</p>

              <p id="p4">我是第四行内容</p>

       </div>

    <input type="button" value="将第2行内容替换为JavaScript课程" onClick="replaceNode()"/>

 

<script type="text/javascript">

       function replaceNode(){

       // 获得父元素div

       var parNode=document.getElementById("Odiv");

       // 获得div下的第2个p子元素

       var secondP=document.getElementById("p2");

       // 创建新的<div> 元素节点

       var newDiv=document.createElement("div");

       // 创建文本节点

       var newText=document.createTextNode("JavaScript课程");

       // 将文本节点添加到刚创建的新元素div中

       newDiv.appendChild(newText);

       // 在父元素中,把第二个p元素替换成新元素div

       parNode.replaceChild(newDiv,secondP);

}

</script>

</body>

</html>

 

关于BOM

BOM,Brower Object Model浏览器对象模型,对浏览器窗口进行访问和操作。

提供了独立于内容而与浏览器窗口进行交互的对象,可以对浏览器窗口进行访问和操作,它包括window,doument,loation ,history ,screen 等子对象。

 

document(文档对象):也称为DOM对象,是HTML页面当前窗体的内容,同时也是JavaScript重要组成部分之一。

history(历史对象):主要用于记录浏览器的访问历史记录,也就是浏览网页的前进与后退功能。

location(地址栏对象):用于获取当前浏览器中URL地址栏内的相关数据。

navigator(浏览器对象):用于获取浏览器的相关数据,例如浏览器的名称、版本等,也称为浏览器的嗅探器。

screen(屏幕对象):可获取与屏幕相关的数据,例如屏幕的分辨率等。

 

window对象

当前浏览器窗体。是BOM中所有对象的核心,同时也是BOM中所有对象的父对象。

定义在全局作用域中的变量、函数以及JavaScript中的内置函数都可以被window对象调用。

常用的方法:

window.innerHeight - 浏览器窗口的内部高度

window.innerWidth - 浏览器窗口的内部宽度

window.open() - 打开新窗口

window.close() - 关闭当前窗口

 

location对象

location对象提供的用于改变URL地址的方法,所有主流的浏览器都支持。

location.href  获取URL

location.href="URL" // 跳转到指定页面

location.reload() 重新加载页面

其他对象

history对象

history对象可对用户在浏览器中访问过的URL历史记录进行操作。

history.forward()  // 前进一页

history.back()  // 后退一页

 

 

screen对象

屏幕对象

 

navigator对象

浏览器对象,通过这个对象可以判定用户所使用的浏览器,包含了浏览器相关信息。

navigator.appName  // Web浏览器全称

navigator.appVersion  // Web浏览器厂商和版本的详细字符串

navigator.userAgent  // 客户端绝大部分信息

navigator.platform   // 浏览器运行所在的操作系统

 

一个实例:滚动的小球

 

<!DOCTYPE html>

    <html lang="en">

    <head>

        <meta charset="UTF-8">

        <title></title>

        <style>

            #one{

                width:80px;

                height:80px;

                background-color: pink;

                position: fixed;

                left:0;

                top:0;

                border-radius: 50%;

                font-size: 10px;

                text-align: center;

                line-height: 80px;

            }

            html,body{

                width:100%;   

                height:100%;

            }

        </style>

    </head>

    <body>

        <div id="one"></div>

        <div id="two"></div>

 

        <script>

            window.onload = function(e){

                var isSure = confirm('开始动画?')

                var x = 0;

                    var y = 0;

                    var xs=10;

                    var ys=10;

                    var left = document.body.clientWidth;

                    var one = document.getElementById("one");

                    var two = document.getElementById("two");

 

                    function move(){

                        x += 0.2*xs;

                        y += 0.2*ys;

                        one.innerHTML = 'x:' + x +'y:' +y;

 

                        two.innerHTML = '当前页面路径:' + window.location.href;

                        if(x >= document.body.clientWidth-one.offsetWidth-20 || x < 0){

                            xs=-1*xs;

                        }

                        if(y >= document.body.clientHeight-one.offsetHeight-20 || y < 0){

                            ys=-1*ys;

                        }

                        

                        one.style.left = x+"px";

                        one.style.top = y+"px";

                    };

                    var dt = setInterval(function(){

                        move()

                    },100);

                    if(isSure){

                        one.onmouseover = function(){

                            clearInterval(dt)

                        }

                        one.onmouseout = function(){

                            dt = setInterval(function(){

                                move()

                            },100);

                        }

                        }

                   

            }

        </script>

    </body>

    </html>

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!