回调函数之事件-dom基础

dom节点基础

节点的类型分为:

元素节点(就是标签),文本节点(标签内的文本),属性节点(id='')
比如下列代码中:

<div>测试<em>倾斜</em>列表</div>

元素节点是:

<em>倾斜</em>

文本节点是:
测试
nodeType属性:每个节点都有一个nodeType属性,当nodeType是1的时候为元素节点,当是3的时候是文本节点。
nodeName属性:文本节点的nodeName属性为null,元素节点的nodeName属性是获取元素节点的标签名和tagName值。
nodeValue属性:元素节点本身没有内容为null,文本节点的nodeValue的值是文本内容。

节点的关系

childNodes属性:每个节点都有一个childNodes属性,通过访问数组的方法可以访问保存的NodeList对象,NodeList对象保存着一组有序的节点。可以通过访问length可以访问NodeList的长度。但NodeList并不是数组而是类数组对象。
例如:

var firstChild=someNode.childNodes[0]
var count=someNode.length

parentNode属性:该属性指向文档树中的父节点,子节点的的该属性指向同一个父节点。
appendChild方法 可以动态添加元素节点和innerHtml的效果一样

var node=document.creatElement('li')
var textnode=document.createTextNode('water')
node.appendChild(textNode)
document.getElementById('list').appendChild(node)//先创建标签,然后创建内容,再把内容添加到标签上。

replaceChild方法 接受两个参数即要插入的节点和要替换的节点。这个要插入的新节点可以是已经存在的也可以是新创建的。

<ul>
    <li>coffee</li>
    <li>milk</li>
</ul>
var textNode=document.createTextNode('water')
var item=document.getElementById('list').childNodes[0]
item.replaceChild(textNode,item.childNodes[0])//item=document.getElementById('list').childNodes[0]指的是<li>coffee</li>而item.childNodes[0]指的是coffee

removeChild方法如果想移除节点的话就用removeChild方法。

document类型

文档子节点

访问html元素

document.documentElement
document.childNodes[0]
document.firstChild

访问body元素

document.body

文档信息

document.URL//访问完整的url
document.title

Element类型

访问元素的标签名

<div>this is a cat</div>
var box=document.querySelector('div')
alert(box.nodeName)//div
alert(box.tagName)//div

访问元素的属性值

  1. 对于html元素
<div class='ba',id='bb',title='body'></div>
var box=document.querySelector('div')
alert(box.id);
alert(box.className)
alert(box.title)
alert(box.head)
  1. getAttribute方法
    该方法也可以获取自定义属性的值
alert(box.getAttribute('id'))
alert(box.getAttribute('class'))

尽量避免用getAttribute访问style和onclick。
设置元素的属性

  1. setAttribute
div.setAttribute('id','ba')

传入两个参数:一个是设置的属性名称,一个是属性的值。

  1. 可以直接设置
div.id='ba'
document.charset='UTF-8'

访问元素的属性

box.attributes[0]

创建元素

var box=document.creatElement('div')
document.body.appendChild(box)//将新创建的元素添加到body中  

Text类型

创建文本节点

var text=document.createTextNode('hello world')

选择符API

querySelector

var body=document.querySelector('body')

当document类型调用querySelector时指的是在文档元素的范围内查找匹配的元素。
当通过Element类型调用querySelector时指的是在该元素的后代元素的范围内查找匹配的元素。

querySelectorAll

var strongs=document.querySelectorAll('p strong')//取得所有p元素中的所有strong元素。

自定义元素的属性

必须添加前缀data-
可以通过元素的dataset属性来访问元素的属性的值。

var box=div.dataset.appId//属性为data-appId

children属性

访问元素的子节点与childNodes属性差不多,只不过忽略了空白节点。更常用。

var childCount=element.children.length;
var firstChild=element.children[0]

样式

访问元素的样式

  1. 对于使用短横线的css属性名,必须将其转化成驼峰的样式。对于float则写成cssFloat
div.style.backgroundColor='red';
div.style.cssFloat='left'//非ie
div.style.styleFloat='left'//ie

style属性只能获取和设置行内不能获取内联连接。

  1. document.defaultView提供了getComputedStyle的方法
var div=document.querySelector('div')
var style=document.defaultView.getComputedStyle(div,null)
alert(style.backgroundColor)//red
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容