06-JS DOM操作
2021-04-25 20:28
标签:包含 family Owner lin html标签 links 结构 children get 创建节点 document.write(创建任意内容,并写入) docement.createElement(创建元素) document.createTextNode(创建文本) document.createDocumentFragment (创建虚拟节点对象) document.createComment(创建注释) 注:以上创建的节点需要 xx.appendChild()的方法添加到页面中。document.write除外。 高效创建节点 innerHTML 321 文本1 321 outerHTML 清空原来的所有值,变成这个 interText 321 替换原来所有的文本 替换原来所有的文本 outerText 与 innerText 的区别 321 替换原来所有的文本 替换原来所有的文本 替换原来所有的文本 父子节点查找 父节点 找 子节点 子节点 找 父节点 子节点 找 兄弟节点 找文档根节点 类数组对象 类数组对象NodeList,转换成数组,再添加一个节点。
HTMLCollection(获取类数组对象) 类数组对象NameNodeMap
类数组对象的动态性 获取节点 操作节点 appendChild() insertBefore() replaceChild() cloneNode() normalize()
splitText() 删除节点 removeChild() removeNode() removeChild()与innerHTML的区别 06-JS DOM操作 标签:包含 family Owner lin html标签 links 结构 children get 原文地址:https://www.cnblogs.com/mingliangge/p/12207675.html
document.write("
添加到html中的文本
");var jd = document.createElement("li"); //创建一个li元素
var wb = document.createTextNode("创建的文本"); //创建一个文本内容
var fragment = document.createDocumentFragment(); //创建一虚拟的节点对象,节点对象包含所有属性和方法。
//document.createDocumentFragment()优点:说白了就是为了节约使用DOM。每隔JavaScript对DOM的操作都会改变页面的变现,并重新刷新整个页面,从而减少消耗的时间。为解决这个问题,可以创建一个文档碎片,把所有的新摘要附加其上,然后把文档碎片的内容一次性添加到文档中。
var zhuxi = document.createComment("注释的内容"); //创建一个注释内容
innerHTML:用来设置或获取当前标签的起始和结束里面的内容
html文档:
标题节点
"
+"小标题节点
";
dd.innerHTML = str; //原来div里面的元素都被替换
script文档2: //获取
var dd = document.getElementById("dd");
console.log(dd.innerHTML); //获取到的值为outerHTML:返回调用它的元素及所有子节点的HTML标签
html文档:
interText:设置或获取位于对象起始和结束标签内的文本。
html文档:
outerText:获取文档跟innerText一样,设置不一样,如,
html文档:
找第一个子节点:firstChild
找最后一个子节点:lastChild
找第n个子节点:childNodes[n-1] //从0开始算
找第n个子节点:childNodes.item(n-1) //从0开始算 找父节点:parentNode
找下一个兄弟节点:nextSibling
找上一个兄弟节点:previousSibling直接查找文档的根节点:var gen = document.documentElement;
直接查找文档的根节点:var gen = p.ownerDocument; //现在gen = document
tagName:返回属性的标签名。 //如,console.log("gen.tagName"); 直接打印出根节点。
元素名.hasChildNodes(); //判断该元素是否有子节点,返回Boolean值。包括文本节点。
console.log(gen.children[i]); //打印出第 i+1 个节点,不包括文本节点,从0开始算
var shu = gen.childElementCount; //算出有多少个非文本节点的节点
var script = document.scripts; //获取当前html里面所有的script
var links = document.links; //返回当前html中所有的a标签链接
var cells = document.getElementById("tr").cells; //获取当前html中,所有的td元素
var imgs = document.images; //获取当前html中,所有的图片
var forms = document.forms; //获取当前html中,所有的表单
var options = document.getElementById("select").options; //获取当前html中,所有的option选项
var ps = document.getElementsByTagName("p"); //获取当前html中,的所有p标签的内容
以上的值返回的都是HTMCollection
Nodelist,HTMLcollection, NamedNodeMap 三个集合都是 动态的, 是有生命、有呼吸的对象
它们实际上是基于DOM结构动态执行查询的结果,因此DOM结构的变化能够自动反映这些对象中
每当文档结构发生变化时,它们都会得到更新。因此,它们始终都会保存着最新、最准确的信息
IE6 到 IE8 也兼容
getElementById()
getElementsByName()
getElementsByTagName()
IE9 或以上
getElementsByClassName()
querySelector()
querySelectorAll()ul id="abc">
li> 1 li>
li> 2 li>
li> 3 li>
ul>
appendChild() //为指定元素节点的最后一个子节点之后添加节点。该方法返回新的子节点。
如:要为上面ul添加一个li
var abc = document.getElementById(‘abc’); //获取ul元素对象
var text = document.creatTextNode(‘4’); //创建文本节点4
var li = document.createElement(‘li’); //创建li元素
li.appendChild(text); //给li元素填入文本节点4
ul.appendChild(li); //给ul元素填入刚才的li元素
insertBefore() //在指定的已有节点之前插入新的子节点
如:要为上面
replaceChild(要插入的节点,被替换的节点) //用新的节点替换某个子节点,返回值是被替换的子节点
如:要为上面
cloneNode(true/false) //节点的拷贝,返回该副本。不填时为false,false表示只拷贝当前节点的标签元素,不拷贝子节点;true表示连同子节点一起拷贝。
如:拷贝一份ul到当前的body里面
var abc = document.getElementById(‘abc’); //获取ul元素对象
var clone = abc.cloneNode(true); //连同子节点一起拷贝
document.body.appendChild(clone); //拷贝的节点要有父节点,没有父节点的话得通过appendChild、insertBefore、replaceChild等方式进行添加
normalize() //合并相邻的text节点
var div = document.creatElement(‘div’); //创建一个div
var text = document.creatTextNode(‘123’); //创建第一个文本节点
div.appendChild(text); //把第一个文本节点添加到div里面
var text2 = document.creatTextNode(‘456’); //创建第二个文本节点
div.appendChild(text2); //把第二个文本节点添加到div里面
document.body.appendChild(div); //在body显示div
//可以看见右边调试工具的文本节点有两个的
div.normalize(); //这样我们就能把两个节点合并为一个节点了
splitText() //按照指定位置把一个文本节点分割为两个文本节点,返回新的文本节点
var div = document.creatElement(‘div’); //创建一个div
var text = document.creatTextNode(‘123456’); //创建一个文本节点
div.appendChild(text); //把文本节点添加到div里面
var fen = div.firstChild.splitText(3); //从第4个开始分割,包含第四个。
console.log(div.firstChild.nodeValue); //控制台打印出第一个文本节点,即123
ul id="abc">
li> 1 li>
li> 2 li>
li> 3 li>
ul>
removeChild() //删除某个节点,括号必须传入要删除的节点,返回删除的节点
如:删除上面
removeNode() //ie私有,参数是布尔值,默认为false。false时只删除改节点,true时连同子节点一起删
如:删除上面的ul节点,不删子节点
var abc = document.getElementById(‘abc’); //获取ul元素id
var del = abc.removeNode();
如:删除上面的ul节点,连同子节点
var abc = document.getElementById(‘abc’); //获取ul元素id
var del = abc.removeNode(true);
removeChild(),在ie6-8删除后还可以调用;在chrome删除后还可以调用
innerHTML,在ie6-8删除后还不可以调用;在chrome删除后还可以调用
ps:调用指的是元素对应的方法,而不是元素本身
上一篇:selenium执行JS