document对象为文档节点,位于全部节点的顶端html
nodeType为9node
nodeName为“#document”chrome
nodeValue为null浏览器
没有父节点app
子节点有元素节点,注释节点,DOCTYPE节点等等dom
最经常使用的是元素节点,document的子节点只有一个元素节点,就是html节点编码
document的一些经常使用属性和方法:spa
属性:orm
document.documentElement:直接得到一个html文档的<html>标签htm
document.title:获取<title>标签,能够得到内容和修改内容,document.title直接对应页面选项卡上的文字
document.body:得到<body>标签
document.head:获取<head>标签 这个只适用于safiri和chrome浏览器,要慎用
document.URL:获取页面整个的URL地址
document.domain:获取页面的域名
document.referrer:获取跳转到当前页面的URL地址
document.readyState;返回loading(页面正在加载)或者complete(页面加载完毕)
document.charset:能够获得页面的编码方法,同时也能够对其赋值,改变页面的编码方式
例:当前页面的地址为http://www.baidu.com/a/index.html,上一个页面的地址为http://www.souhu.com/a/index.htm,在baidu是从souhu跳转过来的
因此document.URL为http://www.baidu.com/a/index.html,
因此document.domain为www.baidu.com,
因此document.referrer为http://www.souhu.com/a/index.html。
其中能够对document.domain进行修改,其余两个不能够修改,document.domain能够修改成baidu.com,将其改为松散的域名,可是只能这样改,
不能够改为其余页面的域名。
document.domain的做用:有两个页面,一个域名为p2p.baidu.com 另外一个为www.baidu.com,两者之间的js是不能够进行互相取值的,可是若是将两个js文件
的document.domain都改成baidu.com,两者之间就能够互相访问彼此的js对象了。
注:只要讲document.domain改成松散的之后,就不能够再改成紧绷的了,若是document.domain改成了baidu.com就不能够再改成www.baidu.com了。
方法:
getElementById:
document.getElementById("某个id名") 获取该id所对应的标签,若是有多个id,只取第一个,这个方法通常只用document调用
getElementsByTagName
document.getElementsByTagName("某个标签的名") 若是是用document调用这个方法,则获取的是全部这个标签名的元素,返回一个HTMLCollection对象
至关于一个NodeList对象。
getElementsByTagName也能够在某个元素上调用,例如,如今获取了一个元素element
element.getElementsByTagName("div")就是在element这个元素的全部后代元素中进行搜索。
var a=document.getElementsByTagName("div")
var a=document.getElementsByTagName("div")
a.length:获取所得到的元素的个数
a[i]/a.item(i):获取第i 个元素
getElementsByClassName
这个方法一样能够在元素上调用,也能够用document调用,返回一个NodeList类型,存储的为具备该类名的标签
在元素上调用的时候是得到该元素的后代中具备这个类名的元素
var a=document.getElementsByClassName("aaa")
a.length:获取所得到的元素的个数
a[i]/a.item(i):获取第i 个元素
同时能够搜索具备几个类的元素
例如document.getElementsByClassName("aaa bbb ccc")
getElementsByName
该方法会返回name为某个具体值的元素,为HTMLCollection类型,至关于一个NodeList类型
只能用document调用
var a=document.getElementsByName("aaa")
a.length:name为aaa的元素个数
a[i]/a.item(i):第i 个元素
querySelector
这个方法能够有document,html中的各类元素,和documentFragment调用,其中documentFragment是DOM中的一个节点,有文章做专门介绍
document在全局查找,在元素上调用会在元素的后代中查找,在documentFragment上调用,会在documentFragment的内容中进行查找
传入的参数能够是任何的CSS选择器
例如
document.querySelector(".abc") 查找类名为abc的元素
document.querySelector("p a")查找全部是p标签的后代的a元素
这个方法只返回查找到的第一个元素
querySelectorAll
与querySelector同样,可是会找到全部的元素,返回NodeList类型
有item() [] length属性
以上全部的方法得到到的元素都有一个classList属性
classList属性中有add,remove,traggle,contains,item方法,有length属性
a[0].classList.add("某个类名"):能够在该标签中加入这个类
a[0].classList.remove("某个类名"):能够在该标签中加入这个类
a[0].classList.toggle("某个类名"):能够判断标签中是否有这个类,若是有就删除,若是没有,就添加
a[0].classList.contains("某个类名"):判断标签中是否有这个类,返回true活着false
a[0].classList.length:获得这个元素中类的个数
a[0].classList.item(i)/a[0].classList[i]:获取第i个类
用这个属性,就能够很方便的对元素的类进行操做
document还有一些简单的操做
document.anchors 获得全部带有name的<a>标签
document.links 获得全部带有href的<a>标签
document.images 获得全部的<img>标签
document.forms 获得全部的<form>标签
这是个方法都返回HTMLCollection对象,至关于NodeList对象 有length,item() []属性和方法
其实这四个方法就是上面方法的一些简写,本质都是同样的
write() writeln() open() close()方法
document.write():接收一个字符串参数,可使字符串,js里的各类方法,或html标签,script标签,将执行的结果输出到页面中,
若是有</script>要将其转义为<\/script>,不然识别到</script>时会使结束js的加载。
若是在整个页面都加载完再调用这个方法的话,就会把以前的页面覆盖,若是在页面加载过程当中调用,则不会覆盖。
document.writeln() 与document.write()做用相同,不过最后会自动添加一个换行符
open() close() 会分别打开和关闭网页的输出流。若是在页面加载过程当中调用document.write()则不用调用这两个方法
若是在页面加载结束调用document.write(),则会自动调用document.open()擦出以前页面的内容,而后执行完document.write()后自动调用
document.close()关闭输入流,不用显示调用这两个方法。
createElement()方法
用document.createDocument()方法,能够建立元素,括号里为元素名
例如var aaa=document.createDocument("div")
此时则建立了一个div元素,存储在aaa中,能够为其添加属性
div.align="center" 等等
能够用appendChild等方法将aaa即div元素插入到html文档中
还有另外一种建立元素的方法
var aaa=document.createDocument("<div align=\"center\"></div>")
即直接传入html标签
createAttribute()方法
建立属性节点,在Element与Attr节点那一章中具体说明