1、DOM操作的常用API有哪些?
节点查找API
document.getElementById:根据ID查找元素,大小写敏感,如果有多个结果,只返回第一个;document.getElementsByClassName:根据类名查找元素,多个类名用空格分隔,返回一个 HTMLCollection 。注意兼容性为IE9+(含)。另外,不仅仅是document,其它元素也支持 getElementsByClassName 方法;document.getElementsByTagName:根据标签查找元素, * 表示查询所有标签,返回一个 HTMLCollection 。document.getElementsByName:根据元素的name属性查找,返回一个 NodeList 。document.querySelector:返回单个Node,IE8+(含),如果匹配到多个结果,只返回第一个。document.querySelectorAll:返回一个 NodeList ,IE8+(含)。document.forms:获取当前页面所有form,返回一个 HTMLCollection ;
节点创建API
createElement创建元素createTextNode创建文本节点cloneNode克隆一个节点createDocumentFragment
节点修改API
appendChildinsertBeforeinsertAdjacentHTMLElement.insertAdjacentElement()removeChildreplaceChild
节点关系API
1、父关系API2、子关系APIparentNode:每个节点都有一个parentNode属性,它表示元素的父节点。Element的父节点可能是Element,Document或DocumentFragment;parentElement:返回元素的父元素节点,与parentNode的区别在于,其父节点必须是一个Element元素,如果不是,则返回null;
3、兄弟关系型APIchildren:返回一个实时的 HTMLCollection ,子节点都是Element,IE9以下浏览器不支持;
childNodes:返回一个实时的 NodeList ,表示元素的子节点列表,注意子节点可能包含文本节点、注释节点等;
firstChild:返回第一个子节点,不存在返回null,与之相对应的还有一个 firstElementChild ;
lastChild:返回最后一个子节点,不存在返回null,与之相对应的还有一个 lastElementChild ;
previousSibling:节点的前一个节点,如果不存在则返回null。注意有可能拿到的节点是文本节点或注释节点,与预期的不符,要进行处理一下。
nextSibling:节点的后一个节点,如果不存在则返回null。注意有可能拿到的节点是文本节点,与预期的不符,要进行处理一下。
previousElementSibling:返回前一个元素节点,前一个节点必须是Element,注意IE9以下浏览器不支持。
nextElementSibling:返回后一个元素节点,后一个节点必须是Element,注意IE9以下浏览器不支持。
元素属性型API
1、setAttribute给元素设置属性:
2、getAttribute
3、hasAttribute
样式操作API(面试考点)
1、直接修改元素的样式elem.style.color = 'red'; elem.style.setProperty('font-size', '16px'); elem.style.removeProperty('color');
2、动态添加样式规则
var style = document.createElement('style'); style.innerHTML = 'body{color:red} #top:hover{background-color: red;color: white;}'; document.head.appendChild(style);
3、classList获取样式属性
了解dom节点样式(classList)的remove, add, toggle, contains, replace等方法的使用。
4、window.getComputedStyle 通过element.sytle.xxx只能获取到内联样式,借助window.getComputedStyle可以获取应用到元素上的所有样式,IE8或更低版本不支持此方法。
var style = window.getComputedStyle(element[, pseudoElt]);。