美文网首页
DOM 操作

DOM 操作

作者: 常青的秘密 | 来源:发表于2017-10-27 20:30 被阅读7次

1. 增

/*
    子节点的增加
    若newNode本身是someNode的子节点,则是newNode的移动。
*/
//插入newNode,使其成为someNode.lastChild
someNode.appendChild(newNode);

//插入newNode,使其成为referNode.previousSibling。若referNode=null,则newNode===someNode.lastChid。
//referNode必须为someNode的子节点。
someNode.insertBefore(newNode, referNode);
/*文档写入*/
//writeln()会在输入字符串末尾添加一个换行符(\n),而write()只会原样写入。
document.write(content);
document.writeln(content);

//创建元素
document.createElement(elementName);

//创建文本节点
document.createTextNode(text);
//根据myHTML创建新的DOM树,替换element的子节点树(部分元素不支持innerHTML)
element.innerHTML = myHTML;

//根据myHTML创建新的DOM树,替换element及其子节点树
element.outerHTML = myHTML;

//插入标记(place为插入位置,值必定为"beforebegin"、"afterbegin"、"beforeend"、"afterend",且必须为小写),插入位置参照下表
element.insertAdjacentHTML(palce,HTMLText);
place 意义
beforebegin element的前一个同辈元素
afterbegin element的第一个子元素
beforeend element的最后一个子元素
afterend element的最后一个同辈元素

2. 删

/*子节点的删除*/
//从DOM树上删除oldNode,但oldNode依旧在文档中
//oldNode必须为someNode的子节点。
someNode.removeChild(oldNode);

3. 改

/*子节点的替换*/
//在DOM树上,使用newNode替换oldNode,但oldNode依旧在文档中
//oldNode必须为someNode的子节点。
someNode.replaceChild(newNode, oldNode);

//属性的读写
element.setAttribute(key,value);
element.getAttribute(key);

4. 查

/*节点的查找*/
//若找到相应的元素则返回该元素,否则返回null。
document.getElementById(IdName);

//返回包含0个或多个元素的NodeList
document.getElementsByTagName(TagName);

/*IE8+支持下列代码*/
//在该元素后代元素范围内查找匹配的元素,返回第一个匹配的元素
element.querySelector(cssSelector);

//在该元素后代元素范围内查找匹配的元素,返回包含0个或多个元素的NodeList
element.querySelectorAll(cssSelector);

/*IE9+支持下列代码*/
element.childElementCount;//返回子元素个数
element.firstElementChild;//指向第一个子元素
element.lastElementChild;//指向最后一个子元素
element.previousElementSibling;//指向前一个同辈子元素
element.nextElementSibling;//指向后一个同辈子元素

//返回包含0个或多个元素的NodeList
document.getElementsByClassName(ClassName);

5. 复制

/*节点的复制*/
//浅复制,只复制someNode。
someNode.cloneNode(flase);

//深复制,复制someNode及其子节点树
someNode.cloneNode(true);

6. 其他

<!--设List为下列ul元素的节点-->
<ul>
    <li>item 1</li>
    <li>item 2</li>
    <li>item 3</li>
</ul>
console.log(List.childNodes.length); //3 (IE<9) 或 7 (其他浏览器)

由于IE8及更早的版本与其他浏览器处理空白字符的方式不一样,会造成List.childNodes.length的不同。其他浏览器会为空白字符创建节点。为了解决这个问题,可以使用normalize() 来规范化文本节点。

List.normalize();
console.log(List.childNodes.length); //3

9. 参考资料

[1] Nicholas C.Zakas. JavaScript高级程序设计[M]. 人民邮电出版社, 2012.

相关文章

网友评论

      本文标题:DOM 操作

      本文链接:https://www.haomeiwen.com/subject/prvdpxtx.html