DoM
浏览器支持:
IE: 10%
FF: 99%
Chrome: 60%
  • childNotes不兼容
在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

显示节点的类型信息(浏览器兼容):

文本节点: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';

    }
}

  • children
只包含元素节点,不包多文本节点(也是兼容的)。
for(var i=0; i<oUl.children.length; i++){
    oUl.children [i].style.background='red';
}


  • parentNote
某个元素的父节点。

<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,然后实现隐藏

    }

}

  • offsetParent
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
与此类似,但均有兼容性问题。

  • DOM对元素的操作
元素属性操作
第一种:oDiv.style.display=“block”;
第二种:oDiv.style[“display”]=“block”;
第三种:Dom方式

DOM方式操作元素属性
获取:getAttribute(名称)
设置:setAttribute(名称, 值)
删除:removeAttribute(名称)


  • DOM元素的灵活查找
通过元素的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基础的更多相关文章

  1. 原生js操作DOM基础-笔记

    原文参考http://mp.weixin.qq.com/s?__biz=MzU3MDA0NTMzMA==&mid=2247485490&idx=1&sn=15197b4b53e ...

  2. js入门——Dom基础

    DOM=DocumentObject Model,文档对象模型. Dom有三个不同的部分. 1.核心DOM 也是最基础的文档结构的标准模型 2.XMLDOM 针对XML文档的标准模型 3.HTML D ...

  3. Javascript DOM 编程艺术(第二版)读书笔记——DOM基础

    1.DOM是什么 D=document(文档) O=object(对象) M=Model(模型) DOM又称节点树 一些术语: parent(父)   child(子)   sibling(兄弟)   ...

  4. JavaScript笔记:DOM基础

    一.什么是DOM DOM全称是document object model(文档对象模型).在网页上,组织页面(或文档)的对象被组织在一个树形结构中,用来表示文档中对象的标准模型就称为DOM.通俗的说D ...

  5. js学习笔记--dom部分(一)

    js 学习整理之Dom部分 前面我总结了我最近学习js基础部分,当时提到过js分了三大部分,第一部分ECMA基础也就是第一次写的基础部分, 第二部分也就是DOM部分,也就是这里要写的内容的,然后第三部 ...

  6. 深入浅出DOM基础——《DOM探索之基础详解篇》学习笔记

    来源于:https://github.com/jawil/blog/issues/9 之前通过深入学习DOM的相关知识,看了慕课网DOM探索之基础详解篇这个视频(在最近看第三遍的时候,准备记录一点东西 ...

  7. JavaScript基础15——js的DOM对象

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. Javaweb学习笔记——(三)——————JavaScript基础&DOM基础

    day031.js的String对象 **创建String对象 ***var str = "abc"; **方法和属性(文档) ***属性 lenth:字符串的长度 ***方法 ( ...

  9. python学习笔记十三 JS,Dom(进阶篇)

    JS介绍 JavaScript 是属于网络的脚本语言!JavaScript 被数百万计的网页用来改进设计.验证表单.检测浏览器.创建cookies,以及更多的应用:JavaScript 是因特网上最流 ...

随机推荐

  1. CSS自学笔记(9):CSS拓展(二)

    CSS图片 当一个网页上有一张或多张图片,而且这些图片的尺寸比较大时,为了是网页布局更紧凑合理,我们可以将这些图片放到一个图片库里,可以有效的防止图片过大可能会对网页布局造成的不良影响. 通过CSS我 ...

  2. co & thunkify

    co 之前在generator中已经介绍过Co了 戳这里 http://www.cnblogs.com/cart55free99/p/4893498.html co一般和thunkify一起使用 能够 ...

  3. 在 Linux ubuntu 上安装 *.sh 文件

    简单说来就两步: 增加可执行权限 执行 事情是这样的,打算在 ubuntu 上安装一个 NetBeans IDE 来学习 Java,但是下载下来的文件是 .sh 格式的.图形界面下右键没有执行的选项. ...

  4. overload的一点思考

    仅参数类型不同的重载方法,使用过程的一个困惑: 有没有必要使用instanceof方法? package overload.special; public class OverLoadTest { p ...

  5. 驳Linux不娱乐 堪比Win平台中十款播放器

    播放器在我们日常生活中扮演着非常重要的角色,在Windows操作系统中,播放器被应用的非常广泛,不但我们可以听音乐,甚至还可以听广播,制作铃声,下载音乐等等.而在Linux发行版中,缺少娱乐性一直性W ...

  6. JavaScript压缩混淆 / 格式化 / 美化工具 - aTool在线工具

    原文地址:http://www.atool.org/jscompression.php

  7. QT函数

    1 move 移动 2 resize 改变窗口大小 3 setNum 设置数字 4 setText 设置文本 5 setWindowTitle 设置窗口文本 6 show 弹出窗口 7 text 获取 ...

  8. 网易云课堂_程序设计入门-C语言_第六章:数组_1多项式加法

    1 多项式加法(5分) 题目内容: 一个多项式可以表达为x的各次幂与系数乘积的和,比如: 现在,你的程序要读入两个多项式,然后输出这两个多项式的和,也就是把对应的幂上的系数相加然后输出. 程序要处理的 ...

  9. 打包ipa分发给测试机安装步骤

    1.确定可以打包的Mac电脑,即该Mac电脑已经具备可以打包的权限. 需要上传一份Mac电脑的描述文件,即csr文件. 2.创建bundle id 3.添加测试设备 4.生成证明描述文件 5.Xcod ...

  10. ListBox第一行字体比其他行小

    ListBox第一行字体比其他行小,把字体设置成“宋体”就可以了.