【26】BOM&DOM(节点、获取元素)

1 BOM

Browser Object Model:浏览器对象模型,是浏览器为JS提供的能对浏览器进行相关操作的API。以下介绍BOM对象及其属性、方法

1.1 window

① 弹框

// 警告框  方法返回 undefined
alert('警告内容!');

// 确认框  方法返回布尔值
confirm('你确定吗?');

// 输入框 方法返回用户输入的内容
prompt('请输入:');

② 打开/关闭窗口

// 打开新窗口 空的新窗口
window.open();    
// 打开新窗口 指定页面地址
window.open('网址')
// 在指定窗口打开指定页面
window.open('网址', '窗口名字');
// 打开新窗口,指定窗口的大小
window.open('网址', '', 'width=600,height=400');


// 关闭本窗口   本页面打开了多个或者页面是用open打开的,才可以生效
window.close();

// 调用打印预览
window.print();

③ 页面滚动

// 滚动到指定位置
window.scrollTo(x, y);

// 滚动到指定位置 带效果
window.scrollTo({
    left: x,
    top: y,
    behavior: 'smooth'
});

// 滚动指定的距离
window.scrollBy(x, y);

// 滚动指定距离 带效果
window.scrollBy({
    left: x,
    top: y,
    behavior: 'smooth'
});

④ 定时器

多次定时:

开启定时器:
setInterval(回调函数,时间间隔);
关闭定时器:
clearInterval(定时器标记);

1. 每隔一秒输出一个随机数:
// 开启定时器 指定匿名函数作为回调函数
setInterval(function() {
    console.log(Math.random());
}, 1000);

2. 每隔0.1秒页面背景变为一个随机颜色:
// 开启定时器 指定有名字的函数作为回调函数
setInterval(setBg, 100);
function setBg() {
    // 取三个随机数,范围 0 ~ 255
    var r = Math.floor(Math.random() * 256);
    var g = Math.floor(Math.random() * 256);
    var b = Math.floor(Math.random() * 256);

    // 设置页面的背景色
    document.body.style.background = 'rgb('+r+','+g+','+b+')';
}

3. 倒计时
// setInterval 的返回值是该定时器的标记,标记是一个数字,记录这是第几个页面中的第几个定时器
// 到达一定的条件,停止定时器
var intervalId = setInterval(function() {
    n --;
    box.innerHTML = n;

    // 如果 n 的值变为 0,停止定时器
    if (n <= 0) {
        clearInterval(intervalId);
    }
}, 1000);

单次定时:只调用一次回调函数,常用于延迟执行。

// 开启单次定时器
setTimeout(function() {
    console.log('啊,我终于执行了');
}, 2000);

// 单次定时 返回定时器标记
var timeoutId = setTimeout(runTime, 3000);
function runTime() {
    console.log('runTime 执行了');
}

// 取消单次定时
claerTimeout(timeoutId);

⑤ window 对象属性和方法总结

name                    设置或获取本窗口的名字
history
location
navigator
screen                  以上四个BOM对象也是window对象的属性
document                该DOM对象也是window对象的属性
window.innerWidth        获取视口的宽度
window.innerHeight        获取视口的高度

alert()                 警告框
confirm()               确认框
prompt()                输入框
window.open()           打开新窗口
window.close()          关闭本窗口
window.print()          调用打印接口
window.scrollTO()       滚动到指定位置
window.scrollBy()       滚动指定的距离
setInterval()           开启多次定时
clearInterval()         结束指定的多次定时
setTimeout()            开启单次定时
clearTimeout()          结束指定的单次定时

1.2 history

用来表示本窗口的历史记录。

属性:
length              获取本窗口历史记录的个数

方法:
back()              跳转到上一步(历史记录中的上一个)
fowward()            跳转到下一步(历史记录中的下一个)
go(n)                跳转n步, 正数是下n步,负数上n步

1.3 location

属性:
href                设置或获取完整的url
protocol            设置或获取URL中的协议部分
hostname            设置或获取URL中的主机名部分
port                设置或获取URL中的端口部分
host                设置或获取URL中的主机名+端口号
pathname            设置或获取URL中文件路径部分
search              设置或获取URL中的搜索字符串
hash                设置或获取URL中的锚点部分

方法:
repoad()            重新加载,可实现页面刷新
assign()            跳转页面(history.length + 1,按上一步可退回原网页)
replace()           跳转页面,在本窗口历史记录中删除原网页(history.length不变,按上一步不可退回原网页)

1.4 navigator

属性:
userAgent           获取浏览器的版本信息

1.5 screen

属性:
width               获取屏幕的宽度
height              获取屏幕的高度

2 DOM

<font color="red">MDN 文档对象模型手册</font>:https://developer.mozilla.org/zh-CN/docs/Web/API/Document_Object_Model

Document Object Model,文档对象模型,是一个与平台和编程语言无关的接口,通过这个接口程序和脚本可以动态的访问和修改文档的内容、结构和样式。

2.1 Node 节点

有无数个DOM对象,根据文档中节点类型不同,可将所有的DOM对象分为5大类,对应5种节点,分别为:文档节点 document元素节点 element属性节点 attribute文本节点 text注释节点 comment。文档中的每个部分都是节点,不是节点则不是DOM对象。

2.2 节点的属性

每个节点都有 nodeName、nodeValue、nodeType 属性
元素节点 nodeType:1,  nodeName 获取元素的标签名
属性节点 nodeType:2
文本节点 nodeType:3
注释节点 nodeType:8
文档节点 nodeType:9

2.3 获取元素

其实不用获取其他节点,因为可通过获取元素节点即可访问和修改其他类型的节点。

① 通过 ID 名

document.getElementById('ID名');     //若有同名ID则获取第一个元素,若找不到元素则返回null

② 通过标签名

//返回一个集合(HTMLCollection类型的类数组对象),若没有满足条件的元素,则返回空的集合。

//从整个文档中获取
document.getElementByTagName('标签名');
//从某元素的后代元素中获取
element.getElementByTagName('标签名');

③ 通过类名(IE9以上浏览器支持)

//返回一个集合(HTMLCollection类型的类数组对象),若没有满足条件的元素,则返回空的集合。

//从整个文档中获取
document.getElementByClassName('类名');
//从某元素的后代元素中获取
element.getElementByClassName('类名');

④ 通过 name 属性值

//返回一个集合(Nodelist类型的类数组对象),若没有满足条件的元素,则返回空的集合。

//只有 document 有该方法
document.getElementByName('name属性值');

⑤ 通过CSS选择器(推荐)

// 从整个文档中获取 单个元素(选择第一个满足条件的元素并返回,若没有满足条件的元素则返回null)
document.querySelector('选择器');
// 从整个文档中获取 集合(Nodelist类型的类数组对象,若没有满足条件的元素,则返回空的集合。)
document.querySelectorAll('选择器');

// 从指定元素中获取 单个元素(选择第一个满足条件的元素并返回,若没有满足条件的元素则返回null)
element.querySelector('选择器');
// 从指定元素中获取 集合(Nodelist类型的类数组对象,若没有满足条件的元素,则返回空的集合。)
element.querySelectorAll('选择器');

⑥ 获取所有元素(all 属性)

document.all
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容