js的DOM

DOM

document object model 简称文档对象模型,主要是操作html元素

获取元素节点的方式

通过选择器获取

document.getElementById()  // id选择器,通过id属性来获取元素,参数为string类型的id,返回值是htmlElement
​
document.getElementsByClassName()  // class选择器,通过class属性名获取对应元素,参数为string类型的class名字,返回值是htmlCollectoinof<Element> ,类似一个集合,里面存储了Element,通过下标获取里面对应的元素
//htmlCollection是类似数组的一种结构 具备下标同时具备length属性 可能会有多个数据,但是htmlCollection并不是一个数组 他不具备数组的方法 只是存在对应的下标和length属性
​
document.getElementsByTagName()  // 标签选择器,参数为string类型的标签名,返回值为htmlCollection,通过下标获取里面的元素
 // 通过name值来获取 返回的类型是一个nodeList nodeList不是htmlCollection
 //但是他同样具备对应的下标和length属性 他的方法比htmlCollection要多
 
 document.querySelector()  // 复合选择器,参数为string类型的选择器,返回第一个匹配选择器的元素
 
 document.querySelectorAll()  // 返回所有匹配选择器的元素,接收的是一个nodeList容器,通过下标获取里面的元素
 
 document.getElementByName()  //通过name属性获取 返回的是NodeList

html属性操作

element.attribute  // 获取所有属性,返回一个nameNodeMap,里面包含多个数据,一:可以通过下标访问里面的属性,二:还可以通过键(属性名),三:通过item方法获取是getNameItem方法,有length属性,访问属性的个数,还存在增改set删remove查get的方法。
​
element.Attr  // 属性节点对象
​
例子:
 <div opo = 'a' id="name" title="你好"></div>
    <script>
        var box = document.getElementsByTagName('div')[0];
        var attrs = box.attributes;  // attributes 获取元素所有属性
        console.log(attrs);  //NamedNodeMap {0: opo, 1: id, 2: title, opo: opo, id: id,         title: title, length: 3}
        // 访问元素属性opo
       // 第一种 下标
        console.log(attrs[0]);  // opo='a'
        // 第二种 键
        console.log(attrs['opo']); //opo='a'
        // 第三种 item
        console.log(attrs.item(0));  //opo='a'
        console.log(attrs.getNamedItem('opo'));  //opo='a'
        // 第四种 .属性名
        console.log(attrs.opo);  //opo='a' 获取方式与第二种一致
        // 访问里面属性的个数
        console.log(attrs.length);  //1
        //删除opo这个属性名对应的属性节点
        attrs.removeNamedItem('opo')
        // 创建一个属性节点,参数名为属性值,仅能创建
        var opo = document.createAttribute('opo');
        // 给属性节点属性,还要另外给属性赋值
        opo.value = 'hello';
        // 属性节点不能直接赋值,需要修改可以调用setNameItem里面需要传入一个新的属性节点,最后通过设置        //才能算opo添加到NamedNodeMap内
        attrs.setNamedItem(opo);
        console.log(attrs);  //NamedNodeMap {0: id, 1: title, 2: opo, id: id, title:            title, opo: opo, length: 3}
        console.log(attrs.opo);  // opo = 'hello'
        //对于本身天生就有的属性,直接通过元素.属性名,来获取
        // 以上都是属于NamedNodeMap对象的节点操作,除了document.createAttribute()不是, 统一获            取,使用attributes返回的是一个属性节点集合
         // 属性节点操作操作
        box.setAttribute('opo', '123');   //参数一位属性名,参数二为属性值,都是string类型,如果       属性已经存在则会覆盖原来的属性值
        getAttribute()  //  通过属性名获取对应的属性值,参数为属性名
        removeAttribute()  // 移除指定的属性,参数为要移除的属性名
  </script>
element.属性名  // 对于element内置的属性,可以这样设置
​
element.className  // 返回class的名字,可以进行获取操作也可以进行赋值操作
​
element.id  // id
​
element.title  // title名字,没有为空
​
​

style样式操作

element.style.样式名  //样式名如果是组合名遵循驼峰命名法
​
element.style.backgroundColor  // 可以获取也可以赋值设置
​
className  // 类名,需要特别注意

文本

innerText  // 获取显示的文本,赋值就是设置对应的文本,忽略标签
​
innerHTML  // 获取显示的html内容,赋值就是设置对应的html内容,会解析html标签
​
value  // 获取文本框的内容

节点

元素节点,属性节点,文本节点

nodeName  // 节点名称
​
nodeType  // 节点类型  1 == 元素节点  2 == 属性节点 3 == 文本节点
​
nodeValue   // 节点值  元素节点为null,属性节点是属性值,文本节点是文本值

子节点

element.childElementCount  // 返回节点的元素个数
​
element.childNode  // 返回所有的节点集合,返回类型是一个nodelist,包含所有的子节点
​
element.children  // 返回子元素,返回的是一个htmlCollection,只包含元素节点
  //tagName 获取标签名 document表示整个文档
​
  var content = document.getElementById('content')
​
 console.log(content.tagName); //tagName是一个只读属性 不能进行设置
 
 //document表示整个文档 使用document.获取方法 是在全文中进行获取

父元素,子元素,兄弟元素

parentNode  // 获取父节点,返回Node
​
parentElement  // 获取父元素,返回element
​
children  // 获取所有的元素子节点,返回的是一个htmlCollection
​
children[0]  // 获取第一个子元素(最常用)
​
firstChild  // 获取第一个子节点(包含所有节点)
​
lastChild  // 获取最后一个子节点(包含所有节点)
​
nextSibling  // 下一个兄弟节点
​
previousSibling  // 上一个兄弟节点
​
nextElementSibling  // 
​
previousElementSibling  //

元素节点操作方法

createAttribute('属性名')  // 创建属性节点,必须赋值
​
createElement()  // 创建一个元素,返回的类型是element
​
appendChild()  // 在父元素后添加一个子节点
​
insertBefore()  // 添加到前面,参数一位需要添加的节点,参数二为添加到前面的哪个子节点
​
removeChild()  // 删除子节点
​
createTextNode()  // 创建文本节点
​
cloneNode()  // 克隆一个新的节点
​
setAttributeNode()  // 设置属性节点  建议使用setAttribute()
​
replaceChild()  //  替换子节点,参数一要替换的,参数二被替换的

事件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值