Web前端之 BOM 和 DOM

前端之BOM和DOM

BOM (Browser Object Model)是指浏览器对象模型,它使JavaScript有能力与浏览器进行“对话”

DOM(Document Object Model))是指文档对象模型,通过它,可以访问HTML文档的所有元素

Window 对象是客户端 JavaScript 最高层对象之一,由于Windon对象是其它大部分对象的共同祖先,在调用 Window 对象的方法和属性时,可以省略 Window 对象的引用。例如:window.documenet.write() 可以简写成:document.write()

所有浏览器都支持 window 对象。它表示浏览器窗口

window.innerHeight    浏览器窗口的内部高度
642
window innerWidth     错误案例
VM218:1 Uncaught SyntaxError: Unexpected identifier
window.innerWidth     浏览器窗口的内部宽度
770
window.open()         打开一个新窗口
Window?{postMessage: ?, blur: ?, focus: ?, close: ?, parent: Window,?…}

window.close()    关闭当前窗口

window的子对象

navigator 对象(了解即可) 对象包含了浏览器相关信息

navigator.appName     浏览器的名字
"Netscape"
navigator.appVersion  浏览器版本
"5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3704.400 QQBrowser/10.4.3587.400"
navigator.userAgent   浏览客户端信息,以后用在爬虫,重要
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3704.400 QQBrowser/10.4.3587.400"
navigator.platform    浏览器运行所在的操作系统
"Win32"

history 对象 对象包含了浏览器历史

history.forward()  网页前进一页
history.back()     网页后退一页

location 对象 对象用于获得当前页面的地址(URL),并把浏览器重定向到新的页面

location.href     获取当前页面地址
location.href="https://www.baidu.com"   跳转到指定页面
location.reload()  刷新当前页面   reload(刷新)

弹出框

可以在 js 中创建三种消息框:警告框,确认框,提示框

alert('你看到了吗?')   警告框
blog-common.min.js?v=4QhAuTQQoOm-lM3IPePkpoT4bSJvxH-elPKwr4VYOAI:1 alert: 你看到了吗?
true
alert(123)
blog-common.min.js?v=4QhAuTQQoOm-lM3IPePkpoT4bSJvxH-elPKwr4VYOAI:1 alert: 123
true
confirm('确认删除?')   确认框

true
confirm('确认删除?')

false
prompt('输入姓名')      提示框
"ssss"

定时器

setTimeout()

clearTimeout()

setInterval()

clearInterval()

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
<script>
    function f(){
        alert('我是能弹的')
    }
    // var t = setTimeout(f,3000)  以毫秒为单位,用来及时多久后执行哪个命令
    // setTimeout(f, 3000)
    // clearTimeout(t)           清除定时器命令
    // var t = setInterval(f,2000)   反复执行计时命令
    // clearInterval(t)            清除反复执行定时命令
    function f1(){
        var t =setInterval(f,2000)
        function inner(){
            clearInterval(t)
        }
        setTimeout(inner,6000)
    }
    f1()
</script>
</head>
<body>

</body>
</html>

DOM

DOM:是一套对文档的内容进行抽象和概念化的方法

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

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

DOM 标准规定HTML文档中的每一成分都是一个节点(node):
文档节点(document对象):代表整个文档
元素节点(element对象):代表一个元素(标签)
文本节点(text对象):代表元素(标签)中的文本
属性节点(attribute对象):代表一个属性,元素(标签)才有属性
注释是注释节点(comment对象)

直接查找

document.getElementById('a1')        id选择器
<div class=?"a" id=?"a1">?我是第一个div?</div>?
document.getElementsByClassName('b')  类选择器
HTMLCollection?[div#b1.b, b1: div#b1.b]0: div#b1.blength: 1b1: div#b1.b__proto__: HTMLCollection
document.getElementsByClassName('b')[0]  数组索引取值
<div class=?"b" id=?"b1">?…?</div>?
document.getElementsByTagName('a')    标签选择器
HTMLCollection?[a]0: alength: 1__proto__: HTMLCollection
document.getElementsByTagName('a')[0]   数组索引取值
<a href>?a标签?</a>?

间接查找

DOM 操作HTML代码,以下各类方法基本是基于这个HTML代码基础

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div class="a" id="a1">我是第一个div</div>
<div class="b" id="b1">我是第二个div
    <span class="c" id="c1">我是第二个div的span</span>
    <div class="d" id="d1">我是第二个div的div
    <a href="">a标签</a>
    </div>
</div>
<div class="e" id="e1">我是第三个div</div>
<input type="text" value="123">
</body>
</html>
var dEle=document.getElementById('c1')
undefined
dEle
<span class=?"c" id=?"c1">?我是第二个div的span?</span>?
dEle.parentElement       注:查找父级dom
<div class=?"b" id=?"b1">?"我是第二个div
    "<span class=?"c" id=?"c1">?我是第二个div的span?</span>?<div class=?"d" id=?"d1">?…?</div>?</div>?
var paEle=dEle.parentElement
undefined
paEle
<div class=?"b" id=?"b1">?…?</div>?
paEle.children        注:查找儿子dom不包括孙子
HTMLCollection(2)?[span#c1.c, div#d1.d, c1: span#c1.c, d1: div#d1.d]0: span#c1.c1: div#d1.dlength: 2c1: span#c1.cd1: div#d1.d__proto__: HTMLCollection
paEle.firstChild    注:查找第一个儿子标签内容
"我是第二个div
    "
paEle.firstElementChild   注:查找第一个儿子dom
<span class=?"c" id=?"c1">?我是第二个div的span?</span>?
paEle.lastElementChild    注:查找最后一个儿子
<div class=?"d" id=?"d1">?…?</div>?
paEle.lastChild
#text
var cEle=dEle.nextElementSibling    注:查找当前标签的下一个兄弟
undefined
cEle
<div class=?"d" id=?"d1">?…?</div>?
cEle.previousSibling
#text
cEle.previousElementSibling     注:查找当前元素的上一个兄弟
<span class=?"c" id=?"c1">?我是第二个div的span?</span>?

添加创建节点

var img=document.createElement('img')      创建标签
undefined
img
<img>?
img.src='1.jpg'        设置标签的默认属性
"1.jpg"
img
<img src=?"1.jpg">?
var d1Ele=document.getElementById('a1')      获得标签对象
undefined
d1Ele.appendChild(img)     插入标签
<img src=?"1.jpg">?

时间显示器

onclick 当用户点击某个对象时调用的事件句柄

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<input type="text" id="a1">
<input type="button" value="开始" id="start">
<input type="button" value="暂停" id="stop">
<script>
    var t;
    var a1Ele=document.getElementById('a1');
    var stopEle=document.getElementById('stop');
    var startEle=document.getElementById('start')
    function showtime(){
        var date_obj=new Date();
        var now_time=date_obj.toLocaleString();
        a1Ele.value=now_time;
    }
    startEle.onclick=function(){
        if(!t){
            t=setInterval(showtime,1000)
        }
    }
    stopEle.onclick=function(){
        clearInterval(t)
        t=''
    }

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

搜索框

onfocus 元素获得焦点。 // 练习:输入框

onblur 元素失去焦点。 应用场景:用于表单验证,用户离开某个输入框时,代表已经输入完了,我们可以对它进行验证.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<input type="text" id="a1" value="请输入" onfocus="foo()" onblur="fool()">
    <script>
        var a1Ele=document.getElementById('a1')
        function foo(){
            var val=a1Ele.value
            if(val=='请输入'){
                a1Ele.value=''
            }
        }
        function fool(){
            var val=a1Ele.value
            if(val==''){
                a1Ele.value='请输入'
            }
        }
    </script>
</body>
</html>
var d1Ele=document.getElementById('b1')      获取标签对象
undefined
d1Ele
<div class=?"b" id=?"b1">?"我是第二个div
    "<span class=?"c" id=?"c1">?我是第二个div的span?</span>?<div class=?"d" id=?"d1">?…?</div>?</div>?
var imgEle=document.createElement('img')    创建标签
undefined
imgEle
<img>?
imgEle.src='1.jpg'    设置标签的默认属性
"1.jpg"

imgEle
<img src=?"1.jpg">?
var d1Ele=document.getElementById('a1')
undefined
d1Ele.appendChild(imgEle)    插入子标签
<img src=?"1.jpg">?
var d1Ele=document.getElementById('b1')
undefined

d1Ele.appendChild(imgEle)
<img src=?"1.jpg">?
var c1Ele=document.getElementById('c1')
undefined
d1Ele.insertBefore(imgEle,c1Ele)    插入指定位置的标签
<img src=?"1.jpg">?

imgEle.setAttribute("name","val")    设置标签属性
undefined
imgEle
<img src=?"1.jpg" name=?"val">?
d1Ele
<div class=?"b" id=?"b1">?"我是第二个div
    "<img src=?"1.jpg" name=?"val">?<span class=?"c" id=?"c1">?我是第二个div的span?</span>?<div class=?"d" id=?"d1">?…?</div>?</div>?
d1Ele.removeChild(imgEle)        移除子标签
<img src=?"1.jpg" name=?"val">?
d1Ele.replaceChild(imgEle,c1Ele)  替换标签,第一个参数是新标签,第二个参数是要被替换的标签
<span class=?"c" id=?"c1">?我是第二个div的span?</span>?
d1Ele
<div class=?"b" id=?"b1">?"我是第二个div
    "<img src=?"1.jpg" name=?"val">?<div class=?"d" id=?"d1">?…?</div>?</div>?
var a1Ele=document.getElementById('a1')     获取标签对象
undefined
a1Ele
<div class=?"a" id=?"a1">?我是第一个div?</div>?
a1Ele.innerText     获取标签文本内容
"我是第一个div"
a1Ele.innerText='修改标签内容'    设置修改文本内容
"修改标签内容"
a1Ele.innerHTML    如下解释
"修改标签内容"
var b1Ele=document.getElementById('b1')
undefined
b1Ele
<div class=?"b" id=?"b1">?"我是第二个div
    "<span class=?"c" id=?"c1">?我是第二个div的span?</span>?<div class=?"d" id=?"d1">?…?</div>?</div>?
b1Ele.innerText                获取标签文本内容
"我是第二个div 我是第二个div的span
我是第二个div的div a标签"
b1Ele.innerHTML      获取当前标签底下的所有内容,
"我是第二个div
    <span class="c" id="c1">我是第二个div的span</span>
    <div class="d" id="d1">我是第二个div的div
    <a href="">a标签</a>
    </div>
"
a1Ele.innerText='<h1>111</h1>'     相当于对标签赋值,修改内容
"<h1>111</h1>"
a1Ele.innerHTML='<h1>111</h1>'     设置标签内容,并执行样式
"<h1>111</h1>"

注:innerText 只对 文本内容 进行操作处理,  innerHTML,不仅可操作文本内容,还操作当前标签下所有的 HTML 代码
var b1Ele=document.getElementById('b1')
undefined
b1Ele
<div class=?"b b12 b13" id=?"b1">?…?</div>?
b1Ele.classList      获取所有的 class 属性值
DOMTokenList(3)?["b", "b12", "b13", value: "b b12 b13"]
b1Ele.classList.remove('b12')   移除属性值
undefined
b1Ele
<div class=?"b b13" id=?"b1">?…?</div>?
b1Ele.classList.add('b14')      添加属性值
undefined
b1Ele
<div class=?"b b13 b14" id=?"b1">?…?</div>?
b1Ele.classList.contains('b')   判断值是否存在
true
b1Ele.classList.toggle('b')     toggle(),表示如果存在传的这个值,就删除,不存在就添加
false                           这里存在就给删除了
b1Ele
<div class=?"b13 b14" id=?"b1">?…?</div>?
b1Ele.classList.toggle('b')     这里不存在就添加上
true
b1Ele
<div class=?"b13 b14 b" id=?"b1">?…?</div>?

b1Ele.style.backgroundColor="red"   设置CSS样式属性
"red"
var a1Ele=document.getElementById('a1')
undefined
a1Ele.style.backgroundColor='green'
"green"

使用 JQ

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--写 JQ 代码一定要引入 jquery.js 文件-->
    <script src="jquery.js"></script>
</head>
<body>

</body>
</html>

toggle

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        #a1{
            height: 400px;
            width: 400px;
        }
        .red{
            background: red;
        }
        .green{
            background: green
        }
    </style>
</head>
<body>
<div id="a1" class="red green"></div>
</body>
</html>

原文地址:https://www.cnblogs.com/chmily/p/11686864.html

时间: 2024-11-07 23:43:16

Web前端之 BOM 和 DOM的相关文章

前端之BOM和DOM

一.前戏 到目前为止,我们已经学过了JavaScript的一些简单的语法.但是这些简单的语法,并没有和浏览器有任何交互. 也就是我们还不能制作一些我们经常看到的网页的一些交互,我们需要继续学习BOM和DOM相关知识. JavaScript分为 ECMAScript,DOM,BOM. BOM(Browser Object Model)是指浏览器对象模型,它使 JavaScript 有能力与浏览器进行“对话”. DOM (Document Object Model)是指文档对象模型,通过它,可以访问

前端之BOM、DOM

前戏 到目前为止,我们已经学过了JavaScript的一些简单的语法.但是这些简单的语法,并没有和浏览器有任何的交互.也就是说我们还不能制作一些我们经常看到的网页的一些交互,我们需要继续写学习BOM和DOM的相关知识. JavaScript分为 ECMAScript ,DOM , BOM. BOM(Browser Object Mdel)是指浏览器对象模型,它使JavaScript 有能力与浏览器进行对话. DOM (Document Object Model)是指文档对象模型,通过她,可以访问

前端基础BOM和DOM

BOM window对象 window.innerHeight - 浏览器窗口的内部高度 window.innerWidth - 浏览器窗口的内部宽度 window.open() - 打开新窗口 window.close() - 关闭当前窗口 (只能关闭用js的window.open()打开的页面,了解一下就行了) navigator对象(window子对象) navigator.appName // Web浏览器全称 navigator.appVersion // Web浏览器厂商和版本的详细

Python之路day13 web 前端(JavaScript,DOM操作)

参考链接:http://www.cnblogs.com/wupeiqi/articles/5433893.html day13 1. CSS示例 2. JavaScript 3. DOM操作 上节内容回顾: 1. HTML标签 html/head/body/ input div,span a p br span table > tr行 th表头列 td表头列 h form> action method enctype=;;; select option input系列: text passwo

前端 --- 45 BOM 和 DOM

一.BOM BOM(Browser Object Model)是指浏览器对象模型, 它使 JavaScript 有能力与浏览器进行"对话". 1. window 对象 一些常用的Window方法: (在浏览器调试器的console里面输入下面这些属性或者方法,就能看到对应的效果) window.innerHeight - 浏览器窗口的内部高度 window.innerWidth - 浏览器窗口的内部宽度 window.open() - 打开新窗口 window.close() - 关闭

6.web前端之路:DOM

DOM 文档对象模型(Document Object Model,DOM)是一种用于HTML和XML文档的编程接口.它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈现方式.我们最为关心的是,DOM把网页和脚本以及其他编程语言联系了起来.DOM属于浏览器,而不是JavaScript语言规范里规定的核心内容. 一.查找元素 1.直接查找 var obj0 = document.getElementById('SomeId'); 根据ID获取一个标签 var obj1 = document.

前端基础之BOM和DOM:

目录 前端基础之BOM和DOM 前言 window对象 BOM与DOM操作 DOM学习流程 一些常用的Window方法: window的子对象 navigator对象(了解即可) screen对象(了解即可) history对象(了解即可) location对象 弹出框 计时相关 DOM HTML DOM 树 查找标签 直接查找 间接查找 节点操作 创建节点 添加节点 删除节点: 替换节点: 获取值操作 对类属性操作 class的操作 指定CSS操作 事件 常用事件 绑定方式: window.o

前端 JavaScript BOM &amp; DOM

内容目录: 1. BOM 2. DOM BOM(Browser Object Model)是指浏览器对象模型,它使 JavaScript 有能力与浏览器进行"对话". DOM (Document Object Model)是指文档对象模型,通过它,可以访问HTML文档的所有元素. 一.BOM 1.1 windows对象 所有浏览器都支持 window 对象.它表示浏览器窗口. 所有 JavaScript 全局对象.函数以及变量均自动成为 window 对象的成员. 全局变量是 wind

web前端入门到实战:HTML DOM 事件(实现一个简单的回到顶部功能)

HTML DOM 事件允许Javascript在HTML文档元素中注册不同事件处理程序.事件通常与函数结合使用,函数不会在事件发生前被执行! (如用户点击按钮). 利用onscroll事件写一个回到顶部功能,代码如下: <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8" /> <meta name="viewport" c