dom节点处理
本文属于原创文章,转载请注明–来自桃源小盼聊技术
原生js处理dom节点的各种方法。
html结构
<div id="content">
<div class="left">
left
</div>
<div id="main">
main
</div>
<div class="right">
right
</div>
</div>
document.getElementById()
通过id获取dom对象,参数大写小敏感。
var ele = document.getElementById('content'); // #content
parent.getElementsByName()
通过元素的name属性来获取dom对象,返回一个数组。
var arr = document.getElementByName('user'); // [input, input]
parent.getElementByTagNmae()
通过节点名称获取dom属性,返回一个数组。(ie8只支持document对象)
var arr = document.getElementByTagName('input'); // [input, input]
parent.firstChild
获取父节点的第一个子节点,然而这是个坑,如果父节点与子节点元素之间有空格,那么获取到的第一个是个text,
实际使用时需要封装方法,加上判断nodeType是否等于1。
parent.lastChild
获取父节点的最后一个子节点,坑同上。
parent.childNodes
获取子节点数组,坑同上。
near.previousSibling
获取同辈的前一个元素,坑同上。near 代表同辈元素。
near.nextSibling
获取同辈的下一个元素,坑同上。
near.parentNode
获取父元素节点
var ele = document.getElementById('main');
var p = ele.parentNode; // .content
node.nodeName
获取节点名称
node.getAttribute()
获取节点指定属性值。
var ele = document.getElementById('main');
ele.getAttribute('id');
node.setAttribute()
设置节点指定属性值
var ele = document.getElementById('main');
ele.serAttribute('class', 'show');
document.createElement()
创建元素
parent.appendChild()
插入元素到父元素的末尾
var p = document.createElement('p');
var ele = document.getElementById('main');
ele.appenChild(p);
HTML5新增
parent.getElementsByClassName()
通过class属性获得dom对象,返回一个数组。parent作为查找根节点。
var ele = document.getElementById('content');
var arr = document.getElementsByClassName('red');
var arr = ele.getElementsByClassName('left red');
parent.firstElementChild
获取父节点的第一个子节点。
var ele = document.getElementById('content');
var first = ele.firstElementChild; // .left
parent.lastElementChild
获取父节点的最后一个子节点。
var ele = document.getElementById('content');
var last = ele.lastElementChild; // .right
near.previousElementSibling
获取同辈的前一个元素。
var ele = document.getElementById('main');
var prev = ele.previousElementSibling; // .left
near.nextElementSibling
获取同辈的后一个元素。
var ele = document.getElementById('main');
var next = ele.nextElementSibling; // .right
document.querySelector()
css方式选择器,只选择匹配到的第一个。
var main = document.querySelector(‘#content #main’);
document.querySelectorAll()
css方式选择器,返回一个数组。
var main = document.querySelectorAll(‘#content div);
function getElementsByClassName(node, classname){
if(node.getElementsByClassName){
//使用现有方法
return node.getElementsByClassName(classname);
}else{
var results = new Array();
var elems = node.getElementsByTagName(“*”);
for(var i=0; i<elems.length; i++){
if(elems[i].className.indexOf(classname) != -1){
results[results.length] = elems[i];
}
}
return results;
}
}