BOM,DOM总结

BOM

BOM定义:浏览器对象模型

(BOM提供了很多对象,用于访问浏览器的功能,与浏览器承载展现的页面无关,只是单纯看浏览器自己的性能参数)

一. window对象——BOM核心

( 两重含义,首先是单纯代表浏览器的一个窗口,还有一层含义就是他还代表js中的全局Global对象。)
通过JS访问浏览器窗口的一个接口
  • 系统对话框
  • alert:单纯的提示内容,下面只有一个OK,点击就会关闭,与用户没啥交互

  • confirm:用法与alert一样,参数直接是要显示的内容,但是会有两个按键,一个OK,一个取消。所有confirm函数有返回值,当用户点击OK,返回true,当用户点击取消、或者直接将窗口关闭,则返回false。

  • prompt:比confirm再多加一个input,供用户输入内容。接受两个参数,第一个参数时提示的内容,第二个参数时默认在input中显示的文字。点击OK,则返回input中的内容,点击取消、或者关闭对话框,返回null。

  • 计时函数
  • setTimeout():

接受两个参数,第一个是要执行的函数/语句。 可以直接在双引号中写语句,也可以直接function(){…},第二个参数是延时的毫秒数。

  • setInterval():

接受的参数与setTimeout相同,但是第二个参数代表每隔多少秒执行一次。这个函数是一个重复执行的函数。想要停下来,那么就要调用clearInterval(ID);

ECMAScript规定的Global对象
  • 所有在全局作用域中声明的变量、函数都会变成window对象的属性和方法
  • 定义全局变量与再window对象上直接定义属性的差别
    • 全局变量不能通过delete操作符删除( [] ),而直接在window对象上定义的属性可以删除
    • 尝试访问未声明的变量会抛出错误,但是通过查询window对象,可以知道某个可能未声明的变量是否存在
var newValue = oldValue;   				// error

var newValue = window.oldValue;   // 不会报错,认为是一次属性查询,结果是undefined

二. location对象——页面信息

提供了与当前窗口加载的内容相关的信息——说是内容,其实最多就是URL之类的,再具体的就访问不到了

  • window.location 和 document.location 引用的是同一个对象
  • 属性
    hash, host, hostname, href(location.toString()), pathname, port, protocol, search

三. navigator对象——浏览器

提供了客户端浏览器的信息,比如浏览器的名称,版本,是否安装了插件等等

四. screen对象+history对象

screen:只是用来代表客户端的能力,可以访问浏览器的宽高,像素之类的

history:保存着用户上网的历史记录,拥有go方法,支持前后跳转

  • history对象保存着从窗口被打开的那一刻起用户上网的历史记录
  • 方法
    • history.go(-1)
    • history.go(1)
    • history.back()
    • history.forward()

DOM

1、DOM——文档对象模型。将HTML文件描绘成一个层次化的节点树,允许开发人员添加、修改页面。

2、文档节点是每个文档的根节点,是最外层的元素,每个文档只能有一个文档元素,对于HTML文件来说,文档元素始终是元素。

3、每个节点都有个nodeType属性,不同类型的节点有相应不同的值。比如element为1,document为9,text为3.

所以可以根据nodeType的值来判断这个节点的类型。比如在用nodelist时,对于列表元素来说会返回很多个带空的列表,那么可以通过if(nodelist[i].nodeType==1){ … }来筛选出是li元素(element性质)

4、操作节点:
① 添加:
1、fathernode.appendChild(childnode) //默认在最后添加,为lastChild

如果childnode为已经存在的子节点,那么就会将其从原始位置移到lastChild位置

2、fathrernode.insertBefore(newnode , somenode) //将newnode添加到somenode之前,并且成为somenode的同级别节点,并不是父级节点

②替换:
fathernode.replaceChild(newnode , somechildnode) // 将newnode替换到fathernode下的somechildnode节点,原来的somechildnode将被完全删除

③删除:
fathernode.removeChild(somechildnode) //直接将fathernode中的somechildnode删除

④复制:
cloneNode( flag ) //flag可以选true——深复制,即复制该节点及其下面所有的子节点

                      false——浅复制,只复制该节点本身

注意复制完的节点为孤儿节点,需要为其指定一下父节点,例如append,inset而且不会复制绑定到节点上电js函数,需要自己重新写

5、节点类型
①Documnet

documnet.body  ==<body>

document.title  == <title>

document.URL  ==完整URL

document.domain  ==url中的域名,

可以进行设置解决跨域问题。例如两个页面直接不同URL但是要互相访问,那么就将二者的domain名设置一样的,就可以通过js通信了

document.getElementById

documnet,getElementByTagName ==返回一个nodeList,需要用类似数组的方式进行调用里面的内容,想获得文档所有内容,直接TagName(" * ") 代表全部

documnet.getElementByName ==最常用语单选按钮,一组单选radio设置相同name,这样才能做到每次直选1个,方法会返回此时选中的那一个

documnet,write == 可以直接在括号内写标签内容,会自动生成dom元素。也可以引入外部js文件,注意写起冲突

document.writeln == 作用与write相同,就是自带一个换行符

②Element
即HTML的元素

有id,class(注意对象用的时候为className),title(为提示性内容)之类的常见属性。

可以创建createElement(" …"),直接写标签名当参数

访问元素的子节点:childNodes,注意

  • 元素中的问题

③Text
就是纯纯的文本,默认可以包含内容的节点最多只能有一个文本节点,无论多长都算一个

有一个合并文本节点的方法:normalize(),会自动合并父级下的所有text子节点,为拼接起来的值

④Comment
是注释的内容,值可以通过nodeValue()获取

2、动态插入DOM
① 动态插入script
两种方法:

1、直接插入外部文件

var script = document.creatElemrnt("script");
script.type = "text/javascript";
script.src = "new.js";
documnet.body.appendChild(script);

效果等同于HTML中直接写:

<script type="text/javascript" src="new.js"></script>

2、直接插入代码

var script = document.creatElemrnt("script");
script.type = "text/javascript";
script.appendChild(document.creatwTextNode("function say(){alert("hi!")}"));
documnet.body.appendChild(script);

② 动态插入css

两种方法:

1、用包含外部文件

var link = document.createElement("link");
link.rel = "stylesheet";
link.type = "text/css";
link.href = "style.css";
var head = document.getElementByTagName("head")[0]; //注意link要添加在<head>中
head.appendChild(link);

等同于在HTML中直接写:

<link rel="stylesheet" type="text/css" href="style.css">

2、用

类比,创建style元素,然后通过创建text类型节点直接写内部的代码

③ 动态插入table

在js中,特意为table准备了一些属性和方法可以直接调用。比如插入一行insertRow()

也有为tr准备的一些方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值