前端-BOM+DOM
目录
BOM与DOM总结
BOM
- BOM(Browser Object Model)是指浏览器对象模型,它使得JavaScript有能力与浏览器进行“对话”。
window对象
- Window对象是客户端JavaScript最高层对象之一,由于window对象是其它大部分对象的共同祖先,在调用window对象的方法和属性时,可以省略window对象的引用
- 所有浏览器都支持 window 对象。它表示浏览器窗口。所有 JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员。全局变量是 window 对象的属性,全局函数是 window 对象的方法。
常用的window对象的方法和属性
window.innerHeight; #浏览器窗口的内部高度
window.innerWidth; #浏览器窗口的内部宽度
window.open(); #打开新窗口
window.close(); #关闭当前窗口
window的子对象
navigator对象
- 浏览器对象,通过这个对象可以知晓用户所使用的浏览器以及浏览器相关信息
- navigator对象的属性
navigator.appName; #Web浏览器全称
navigator.appVersion; #Web浏览器厂商和版本的详细字符串
navigator.userAgent; #客户端绝大部分信息
navigator.platform; #浏览器运行所在的操作系统
screen对象
- 屏幕对象,一般不太常用
- screen对象的属性
screen.availWidth; #可用的屏幕宽度
screen.availHeight; #可用的屏幕高度
history对象
- 历史对象,包含了用使用浏览器的历史,但我们无法查看具体的地址,可以简单的用来前进或后退页面
- history对象的方法
history.forward(); #前进一页,其实也是window的属性,window.history.forward()
history.back(); #后退一页
location对象
- location对象用于获得当前页面的地址 (URL),并把浏览器重定向跳转到新的页面,比较重要的一个对象
- location对象的方法属性
location.href; #获取URL
location.href="URL"; #跳转到指定页面
location.reload(); #重新加载页面,就是刷新一下页面
弹出框
- 可以在 JavaScript 中创建三种消息弹出框:警告框、确认框、提示框
警告框
- 警告框经常用于确保用户可以得到某些信息
- 当警告框出现后,用户需要点击确定按钮才能继续进行操作
alert('未满十八不得入内');
确认框
- 确认框用于使用户可以验证或者接受某些信息
- 当确认框出现后,用户需要点击确定或者取消按钮才能继续进行操作
- 如果用户点击确认,那么返回值为 true。如果用户点击取消,那么返回值为 false
confirm('是否年满十八');
提示框
- 提示框经常用于提示用户在进入页面前输入某个值
- 当提示框出现后,用户需要输入某个值,然后点击确认或取消按钮才能继续操纵
- 如果用户点击确认,那么返回值为输入的值。如果用户点击取消,那么返回值为默认值,就是第二个参数,如果没有默认值那么返回null
prompt('问题一:你的初中老师名字:','语文老师');
计时器
- 通过使用 JavaScript,我们可以在一定时间间隔之后来执行某段代码,而不是在函数被调用后立即执行,这类事件称之为计时事件
- 计数器是异步事件
setTimeout 计时器
- setTimeout 计时器是指一段时间后执行事件
#setTimeout('js语句',毫秒);
#方式一
var a=setTimeout('location.reload()',3000); #3s后才执行js语句
#方式二
var a=setTimeout(location.reload(),3000); #不加''的话会立刻执行js语句
#方式三,推荐写成函数形式
var a=setTimeout(function(){location.reload()},3000); #3s后才执行js语句,推荐这种写法
#clearTimeout(计数器id);
clearTimeout(a); #结束计数器a
setInterval 计时器
- setInterval 计时器是指每隔一段时间后就执行某一事件
- 注意尽量开启不同的计时器用不同的变量代替,否则会出问题,因为计数器是异步执行的
#setInterval('js语句',毫秒);
#推荐使用函数的js语句
#第一种写法
var b=setInterval(function(){console.log('你好')},2000);
#第二种写法
var f=function(){console.log('你好');
var b=setInterval('f()',2000); #不能不带''
#clearInterval(计数器id);
clearInterval(b); #结束计数器b
DOM
- DOM(Document Object Model)是指文档对象模型,通过它可以访问HTML文档的所有元素
- 当网页被加载时,浏览器会创建页面的DOM
- HTML DOM 模型被构造为对象的树。
- DOM标准规定HTML文档中的每个成分都是一个节点(node):
- 文档节点(document对象):代表整个文档
- 元素节点(element 对象):代表一个元素(标签)
- 文本节点(text对象):代表元素(标签)中的文本
- 属性节点(attribute对象):代表一个属性,元素(标签)才有属性
- 注释节点(comment对象):代表注释
查找标签
- 要想对标签进行js操作,必须先找到该标签
直接查找
#找到标签的办法
document.getElementById('id名') #根据ID获取一个标签
document.getElementsByClassName('类名') #根据class属性获取(class可以对应多个标签,所以返回 的是一个数组,通过数组[i]的方式取到具体的标签)
document.getElementsByTagName('标签名') #根据标签名获取标签合集
#实例
var a=document.getElementById('d1');
间接查找
parentElement 父节点标签元素
children 所有子标签
firstElementChild 第一个子标签元素
lastElementChild 最后一个子标签元素
nextElementSibling 下一个兄弟标签元素
previousElementSibling 上一个兄弟标签元素
#实例
var a=document.getElementById('d1');
a.parentElement
节点操作
创建节点
- 创建节点也就是创建标签
document.createElement('标签名');
#实例
var a=createElement('a');
添加节点
- 将节点放在某个父级标签的最后
#将节点放在父级标签的最后
父级标签.appendChild(标签名)
#实例
var dd = document.getElementById('dd');
var a=document.createElement('a');
dd.appendChild('a');
#将节点放在父级标签下某个节点的前面
父级标签.insertBefore(新节点,某个节点);
#实例
var dd = document.getElementById('dd');
var a=document.createElement('a');
var d1=dd.children[1]
dd.insertBefore(a,d1);
替换节点
父级标签.replaceChild(新节点,替换的节点);
#实例
var dd = document.getElementById('dd');
var a=document.createElement('a');
var d1=dd.children[1]
dd.replaceChild(a,d1);
删除节点
父级标签.removeChild(节点名);
#实例
var dd=document.getElementById('dd');
var a=dd.lastElementChild
dd.removeChild(a);
文本操作
#标签.innerText="内容" #单纯只是标签里的纯文本内容
var a=document.createElement('a');
a.innerText="<a href='http://www.baidu.com'>百度</a>";
#标签.innerHTML="内容" #内容可以是一个标签
a.innerHTML="<a href='http://www.baidu.com'>百度</a>"; <a> <a href=...>百度</a> </a>
属性操作
#1.查看标签属性
标签.getAttribute('属性');
#2.设置标签属性
标签.setAttribute('属性','值');
#3.删除标签属性
标签.removeAttribute('属性');
#4.标签属性值的特性
自带的属性值可以通过标签.属性的方式查看,但自定义的属性不行
a.getAttribute('href'); #查看标签属性
a.setAttribute('id','a1'); #设置标签属性
a.removeAttribute('id'); #删除标签属性
a.href #通过.属性的方式查看属性值
值操作
- 一般用在input,select以及textarea标签中
#1.查看值
标签.value
#2.修改值
标签.value='值';
class操作
var d=document.getElementById('c1');
d.classList; #获得这个标签的class属性的所有的值
d.classList.add('c2'); #添加class值
d.classList.remove('c2'); #删除class值
d.classList.contains('c2'); #判断是否有某个class值,有返回true,没有返回false
d.classList.toggle('c2'); #有就删除,没有就增加,有就返回false,没有就返回true
CSS操作
标签.style.css样式='值'; #带有有横杠的css属性,要去掉横杠,并且横杠后面的单词首字母大写
var d = document.getElementById('c1');
d.style.backgroundColor = 'red';
d.style.height = '30px'; #注意后面写值时要带""
事件
#常用事件:用户进行操作时会触发时间发生
onclick #用户点击某个标签元素
ondbclick #用户双击某个标签元素
onfocus #标签元素获得焦点(光标)
onblur #标签元素失去焦点
onchange #文本框中内容被改变:通常被用于表单标签,标签内容被改变时触发
onkeydown #某个键被按下
onkeypress #某个键被按下并松开
onkeyup #某个键被松开
onload #图片或页面完成加载加载
onmousedown #鼠标按钮被按下
onmousemove #鼠标被移动
onmouseout #鼠标光点移开某标签元素
onmouseover #鼠标光点位于某标签元素之上
onselect #文本框的内容被选中
onsubmit #确认按钮点击,适用对象为form标签
#引入事件方式一:
<div class="c1" id="d1">
<div onclick="change_color(this);">床前明月光,疑是地上霜</div>
<div>商女不知亡国恨,隔江犹唱后庭花</div> #this是指当前元素,实参
</div>
<script>
function change_color(t) {
t.style.fontSize='30px'; #注意t,t为形参
}
</script>
#引入事件方式二:常用这种引入方式
<div class="c1" id="d1">
<div>床前明月光,疑是地上霜</div>
<div>商女不知亡国恨,隔江犹唱后庭花</div>
</div>
<script>
var dd=document.getElementById('d1');
d1=dd.firstElementChild;
d1.onclick=function () {
d1.style.fontSize='30px';
}
</script>
#实例
<div class="c1" id="d1">
<div>床前明月光,疑是地上霜</div>
<div>商女不知亡国恨,隔江犹唱后庭花</div>
</div>
<script>
var dd=document.getElementById('d1');
d1=dd.firstElementChild;
d1.onmouseover=function () {
d1.style.fontSize='30px';
};
d1.onmouseout=function () {
d1.style.fontSize='16px';
}
</script>