前端开发工程师-JavaScript-6
js的三个组成部分:ECMAScript(核心)、DOM、BOM
DOM 文档对象模型
文档:HTML页面;文档对象:页面中元素;文档对象模型:为了能让程序去操作页面中的元素,定义的一个标准
DOM将文档看做一棵树
1、获取节点——每一个标签都是一个节点
文档节点包括:子节点、父节点、兄弟节点
获取节点——每一个标签都是一个节点
文档节点包括:子节点、父节点、兄弟节点
1、子节点:父节点.children 非标准属性 获取标签节点
父节点.childNodes 标准属性 获取标签节点、文本,可以获取到折行
var oBox = document.getElementById('box');
console.log(oBox.children);//HTMLCollection 返回指定元素的子元素,找到第一级的所有的子元素
console.log(oBox.childNodes);// 找到第一级所有的子节点(元素节点、属性节点、文本节点)
判断节点类型: 节点.nodeType 返回数字,元素节点element(节点类型1)、属性节点attr(2)、文本text(3)、注释节点comments(8)、文档节点document(9)
console.log(oBox.nodeType);//1
获取节点名称:节点.nodeName
console.log(oBox.nodeName);//div
获取文本节点的内容 节点.nodeValue 只有文本节点有这个属性,返回文本节点的内容
console.log(oBox.nodeValue);//null
2、父节点:元素.parentNode 获取直接父元素
元素.offsetParent 获取最近的定位父元素,如果没有定位父级,获取body
var oBox1 = document.getElementById('box1');
console.log(oBox1.parentNode);//父节点
console.log(oBox1.offsetParent);//
3、获取首位节点:父元素.firstChild 父元素的第一个子元素 标准浏览器中 有折行会获取到
父元素.firstElementChild 只能在标准浏览器下使用,不会获取到折行
console.log(oBox.firstChild);//
console.log(oBox.firstElementChild);//第一个子 元素节点
4、获取尾部节点:父元素.lastChild
父元素.lastElementChild
console.log(oBox.lastChild);//会获取到折行
console.log(oBox.lastElementChild);//最后一个子 元素节点
5、获取上一个兄弟节点
console.log(oBox1.previousSibling);//上 一个兄弟节点
console.log(oBox1.previousSibling.previousSibling);
console.log(oBox1.previousElementSibling);//上一个兄弟 元素节点
6、获取下一个兄弟节点
console.log(oBox1.nextSibling);//下一个兄弟节点
console.log(oBox1.nextElementSibling);//null 下一个兄弟 元素节点
/ 1、获取行间属性:元素.style.属性名 元素.属性
console.log(oBox.style.backgroundColor);//获取行间属性
console.log(oBox.id);//获取行间属性
oBox.name = 'asd'; //设置属性(set)
console.log(oBox.name);//获取属性 asd(get)
// 2、DOM 获取/设置属性的方法:
// 获取属性:元素.getAttribute('属性名称');
// 设置属性:元素.setAttribute('属性名称',"属性值");
1、创建元素节点 document.createElement('标签名');
var oP = document.createElement('p'); //创建一个p标签
oP.innerHTML = '123';
// 2、父元素的末尾追加一个节点——appendChild()
oBox.appendChild(oP);
// 3、某个元素之前插入节点——父元素.insertBefore(要插入的节点,参考节点)
// oBox.insertBefore(oP, oBox1); //在oBox盒子内部,oBox1盒子之前插入p标签
// 4、替换节点——父元素.replaceChild(要替换的节点,被替换的节点)
// oBox.replaceChild(oP, oBox1); //将oBox盒子内部的,oBox盒子替换为p标签
// 5、复制节点——要复制的元素.cloneNode(布尔) 默认值为false
oBox.insertBefore(oP.cloneNode(true), oBox1); //复制一个p标签(含标签和内容),并将其追加到元素末尾
// oBox.appendChild(oP.cloneNode(false)); //复制一个p标签(只有标签,没有内容),并将其追加到元素末尾
// 6、删除节点——父元素.removeChild(要删除的节点)
oBox.removeChild(oP); //删除oBox中的第一个oP节点(标签和内容)
// oBox.remove(oP)
oBox1.remove()
var oBox = document.getElementById('box');
var oBox1 = document.getElementById('box1');
//1、创建文本节点——document.createTextNode('文字内容');
var txt = document.createTextNode('abc');
var txt2 = document.createTextNode('def');
// 2、添加到元素节点中
oBox1.appendChild(txt); //在box1盒子中添加元素节点
oBox1.appendChild(txt2); //abcdef
//获取box1盒子中文本节点的个数
// console.log(oBox1.childNodes.length); //2个文本节点
// console.log(oBox1.innerHTML);
// console.log(oBox1.childNodes[0].nodeValue);
// console.log(oBox1.childNodes[1].nodeValue)
3、合并同级的文本节点
oBox1.normalize();
console.log(oBox1.childNodes.length); //1
console.log(oBox1.childNodes[0].nodeValue);
4、拆分文本节点——splitText(2)2表示字符的个数
console.log(oBox1.childNodes[0].splitText(2)); //cdef
console.log(oBox1.childNodes);
5、删除文本节点——deleteData(0,2) 删除 下标为0的位置开始的2个内容
console.log(oBox1.childNodes[1].deleteData(0, 2)); //undefined
console.log(oBox1.childNodes[1].nodeValue); //ef
6、插入文本——insertData(1,"yui") 第一个参数表示下标的位置,第二个参数指插入的文本
oBox1.childNodes[0].insertData(1, "yui"); //ayuib
console.log(oBox1.childNodes[0].nodeValue);
7、替换——replaceData(1,3,'123')第一个参数表示下标的位置,第二个参数指要替换几个字符,第三个参数指替换
的文本内容
oBox1.childNodes[0].replaceData(1, 3, '123');
console.log(oBox1.childNodes[0].nodeValue); //a123b
8、截取字符串——substringData(1,3) 第一个参数表示下标的位置,第二个参数要截取的字符数
var str = oBox1.childNodes[0].substringData(1, 3);
console.log(str); //123
console.log(oBox1.childNodes[0].nodeValue); //a123b
1、获取表格元素
var tab = document.getElementById('table1');
console.log(tab);
console.log(tab.tHead); //获取元素thead
console.log(tab.tFoot); //获取元素tfoot
console.log(tab.tBodies[0]); //获取元素tbody
console.log(tab.rows); //获取元素tr
console.log(tab.tBodies[0].rows); //获取元素tr
console.log(tab.tBodies[0].rows[0]); //获取元素tr
console.log(tab.cells); //undefined
console.log(tab.rows[0].cells); //获取元素td/th
console.log(tab.rows[0].cells[0]); //获取元素td/th
console.log(tab.rows[0].cells[0].innerHTML); //
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
评论已关闭