DoM
浏览器支持:
IE: 10%
FF: 99%
Chrome: 60%
在Chrome和IE9中会将文本节点也算作childNotes,而在IE6-8中childNotes只算元素节点,而不算文本节点。
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
在IE9和Chrome中ul的childNotes个数为9个,而在IE6-8中为4个。
文本节点:noteType值为3
元素节点:noteType值为1
如果要对ul中的li的样式进行操作,并且还要对不同版本的浏览器具有一定的兼容性,可以使用noteType实现。
for(var i=0; i<oUl.childNodes.length; i++){
if(1 == oUl.childNodes[i].nodeType)//说明是元素节点
{
oUl.childNodes[i].style.background='red';
}
}
只包含元素节点,不包多文本节点(也是兼容的)。
for(var i=0; i<oUl.children.length; i++){
oUl.children [i].style.background='red';
}
<ul>
<li>12<a href="javascript:;">隐藏</a></li>
<li>23<a href="javascript:;">隐藏</a></li>
<li>34<a href="javascript:;">隐藏</a></li>
<li>45<a href="javascript:;">隐藏</a></li>
</ul>
var aA = document.getElementsByTag("a");
for(var i=0; i<aA.length; i++){
aA[i].onclick=function(){
this.parentNode.style.display = "none";
//this指向的应该是节点aA[i],而他的parentNode应该是li,然后实现隐藏
}
}
css:绝对定位和相对定位?绝对定位的元素,根据谁定位?
css中绝对定位的元素是根据已定位的父级元素来进行定位的,如果他的第一父级元素没有绝对定位,那么就会寻找他父级的父级元素,直到找到一个已定位的元素为止(最外层就根据body来进行定位。)
绝对定位和相对定位的区别:绝对定位的参照物是已被定为的父级元素;而相对定位的参照物是自身原来的位置,准确的说是未设置left和top值的位置。
<div id="div1">
<div id="div2"></div>
</div>
设置样式1:父级元素div1没有被定位,所以改变div1的位置,div2不会跟着移动,因为div2绝对定位的参照物是div1的父级body。
<style>
#div1 {width: 200px; height:200px; background: red; margin:20px;}
#div2 {width: 100px; height:100px; background: yellow; position: absolute; left:40px; top: 23px;}
</style>
设置样式2:父级元素div1已被定位,div2的参照物就是div1的位置,所以该变div1的位置,div2也会跟着移动。
<style>
#div1 {width: 200px; height:200px; background: red; margin:20px; position:relative; left: 0px; top: 20px;}
#div2 {width: 100px; height:100px; background: yellow; position: absolute; left:40px; top: 23px;}
</style>
offsetParent可以用来获取一个元素用来定位的父级,它指向的是一个对象。
<script>
var oDiv = document.getElementById("div2");
alert( oDiv.offsetParent);
</script>
- firstChild和firstElementChild
获取子元素中第一个元素。
<body>
<ul id="ul1">
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
</body>
<script>
var oUl = document.getElementById("ul1");
if( oUl.firstElementChild){//低版本的IE6-8不能识别标记firstElementChild,但可以识别firstChild
oUi.firstElementChild.style.background="red";
}else{//高版本的浏览器能识别的标记firstElementChild,而不能识别firstChild
oUi.firstChild.style.background="red";
}
</script>
获取尾节点:lastChild、lastElementChild
获取兄弟节点:nextSibling、nextElementSibling以及previousSibling、previousElementSibling
与此类似,但均有兼容性问题。
元素属性操作
第一种:oDiv.style.display=“block”;
第二种:oDiv.style[“display”]=“block”;
第三种:Dom方式
DOM方式操作元素属性
获取:getAttribute(名称)
设置:setAttribute(名称, 值)
删除:removeAttribute(名称)
通过元素的className,选出自己想要的元素。
<body>
<ul id="ul1">
<li class="box"></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li class="box"></li>
<li class="box"></li>
</ul>
</body>
<script>
function getByClass(oParent, ClassName){
var oElem = oParent.getElementsByTag("*");
var aResult=[];
for(var i=0; i<oElem.length; i++){
if(oElem[i].className == "box"){
aResult.push( oElem[i] );
}
}
return aResult;
}
window.onload=function(){
var oUl = document.getElementById("ul1");
var aBox = getByClass(oUl, "box");
for( var i=0; i<aBox.length; i++){
aBox[i].style.background = "red";
}
}
</script>
- 原生js操作DOM基础-笔记
原文参考http://mp.weixin.qq.com/s?__biz=MzU3MDA0NTMzMA==&mid=2247485490&idx=1&sn=15197b4b53e ...
- js入门——Dom基础
DOM=DocumentObject Model,文档对象模型. Dom有三个不同的部分. 1.核心DOM 也是最基础的文档结构的标准模型 2.XMLDOM 针对XML文档的标准模型 3.HTML D ...
- Javascript DOM 编程艺术(第二版)读书笔记——DOM基础
1.DOM是什么 D=document(文档) O=object(对象) M=Model(模型) DOM又称节点树 一些术语: parent(父) child(子) sibling(兄弟) ...
- JavaScript笔记:DOM基础
一.什么是DOM DOM全称是document object model(文档对象模型).在网页上,组织页面(或文档)的对象被组织在一个树形结构中,用来表示文档中对象的标准模型就称为DOM.通俗的说D ...
- js学习笔记--dom部分(一)
js 学习整理之Dom部分 前面我总结了我最近学习js基础部分,当时提到过js分了三大部分,第一部分ECMA基础也就是第一次写的基础部分, 第二部分也就是DOM部分,也就是这里要写的内容的,然后第三部 ...
- 深入浅出DOM基础——《DOM探索之基础详解篇》学习笔记
来源于:https://github.com/jawil/blog/issues/9 之前通过深入学习DOM的相关知识,看了慕课网DOM探索之基础详解篇这个视频(在最近看第三遍的时候,准备记录一点东西 ...
- JavaScript基础15——js的DOM对象
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Javaweb学习笔记——(三)——————JavaScript基础&DOM基础
day031.js的String对象 **创建String对象 ***var str = "abc"; **方法和属性(文档) ***属性 lenth:字符串的长度 ***方法 ( ...
- python学习笔记十三 JS,Dom(进阶篇)
JS介绍 JavaScript 是属于网络的脚本语言!JavaScript 被数百万计的网页用来改进设计.验证表单.检测浏览器.创建cookies,以及更多的应用:JavaScript 是因特网上最流 ...
随机推荐
- 第一个MVC模型
根据慕课网的视频自学来的. 关于MVC的简介和一些常识:http://www.cnblogs.com/jobscn/archive/2011/11/08/2240725.html MVC模式 : MV ...
- ES6新特性-----变量和字符串
一.变量 1. LET 我们都习惯用var 来声明变量,现在还可以用let来声明变量,两者的主要区别是作用域:var声明的变量作用域为包围它的函数,而let声明的变量作用域仅在它所在的块中.(在ES5 ...
- Oracle EBS-SQL (BOM-11):检查无BOM的装配件.sql
select msi.segment1, msi.description, . msi.item_type, msi.inventory_item_status_code 状态 from ...
- [问题解决] LaTex Error:Unknown graphics extension:.eps
错误:编译的时候显示:“!LaTex Error:Unknown graphics extension:.eps” 发生场景:Latex写论文 解决方案: latex eps.texdvi2ps ep ...
- HttpContext.Current.Cache 过期时间
原文:HttpContext.Current.Cache 过期时间 为了更快的读取数据,我们一般会把常用到的数据加载到Cache中 在.NET中,Cache的存在可以依赖多中方式,主要用到HttpCo ...
- InstallShield 工程类型MSI 使用过程中碰到的问题及解决方法。
原文 http://www.cnblogs.com/daocaorenbx/p/InstallShield.html 一.安装完 桌面创建IE快捷方式: 1. install script可以直接建 ...
- libc++abi.dylib handler threw exception
在iOS开发时,有时候遇到libc++abi.dylib handler threw exception这样的异常, 虽然在断点出加上了All Exceptions,也断到相应的代码了,但是没打印对 ...
- C# NameValueCollection集合 .
案例: NameValueCollection nameValueCollection = Request.Params;//获得连接地址中的所有参数 //获取各个参数,eg: ...
- poj 3020 Antenna Placement (最小路径覆盖)
链接:poj 3020 题意:一个矩形中,有n个城市'*'.'o'表示空地,如今这n个城市都要覆盖无线,若放置一个基站, 那么它至多能够覆盖本身和相邻的一个城市,求至少放置多少个基站才干使得全部的城市 ...
- 【玩转Ubuntu】01. Ubuntu上配置JDK
一.安装JDK 提示:这里我们使用jdk1.6,因为android开发要求使用1.6.如果不信你可以打开android studio,它会提示你选择JDK6的路径 下载地址: http://www.o ...