DOM操作HTML元素属性
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>DOM操作HTML元素属性</title> </head> <body> <ul> <li></li> <li></li> <li></li> <li></li> <li></li> </ul> <script> PS:想要操作元素就必须先获取元素: getElementsByTagName('标签名称') getElementById('元素ID') getElementByClassName('类名称') //HTML5新增的DOM API 1, 操作属性的方式 1) obj.style.属性名称 = '值'; oDiv.style.display = 'block'; 2) obj.style['属性名称'] = '值'; oDiv.style.['display'] = 'block'; 3) DOM方式:利用js提供的各种DOM属性和方法操作HTML节点 2, DOM方式操作元素属性 获取属性值:getAttribute(名称) 设置属性并赋值:setAttribute(名称, 值) 删除属性: removeAttribute(名称) 3, childNodes属性元素的子节点集合(元素节点=1, 属性节点=2, 文本节点=3) childNodes.length 获取子元素个数 var list = document.getElementsByTagName('ul')[0]; for(var i = 0; i<list.childNodes.length; i++){ //使所有li背景为红色, 仅仅当节点类型是元素节点时 if(list.childNodes.nodeType = 1){ list.childNodes[i].style.background = 'red'; } } 4, children属性同样是元素的子节点集合(但只包含元素节点) var list = document.getElementsByTagName('ul')[0]; for(var i = 0; i<list.childNodes.length; i++){ //因为此属性只包含元素节点, 故无须做if判断 list.childNodes[i].style.background = 'red'; } PS: childNodes属性及children属性均指第一层子节点而为包含孙级节点 5, parentNode属性表示父节点 var item = document.getElementsByTagName('li')[0]; console.log(item.parentNode); //ul 6, offsetParent属性指最近的祖先定位元素的引用 定位元素指的是元素的 CSS position 属性被设置为 relative、absolute 或 fixed 的元素。 与CSS定位机制一样,如果其父元素没有CSS定位属性,则逐级向上(包裹元素)寻找离其最近的具有CSS定位属性的父级,如始终未找到则以body作为其定位的父元素 JS OffsetParent属性深入解析 http://www.cnblogs.com/jhxk/articles/1669680.html 7, 首尾子节点 IE6-8 firstChild属性 第一个子节点 高级浏览器 firstElementChild属性 第一个子节点 兼容浏览器处理 if (obj.firstElementChild) { obj.firstElementChild... }else{ obj.firstChild... } lastChild, lastElementChild同理 8, 前后兄弟节点 IE6-8 nextSibling属性 后一个子节点 高级浏览器 nextElmentSibling属性 后一个子节点 兼容浏览器处理 if (obj.nextElmentSibling) { obj.nextElmentSibling... }else{ obj.nextSibling... } previousSibling, previousElementSibling同理 9, 封装ClassName(), 用于获取元素的class属性集合 [基础版本BUG] function getElementsClass(oParent, nClass){ // 1>获取页面上的所有的元素使用*通配符 var ele = getElementsByTagName('*'); // 2>用于保存获取得到的所有class var Result = []; // 3>筛选出所有的class, push()进数组 for (var i = 0; i < ele.length; i++) { if (ele[i].ClassName = nClass) { Result.push(ele[i]); }; }; // 4>返回获取到的class集合 return Result; } </script> </body> </html>