前端-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.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>

posted @ 2020-06-19 22:57  yyyzh  阅读(81)  评论(0编辑  收藏  举报