【JS学习笔记】DOM基础-字节点,父节点

一、DOM基础

(1)什么是DOM?DOM,即document,是用来操作页面上的元素,比如操作div获取,修改样式等。是JS的组成部分,还是一套规范。

(2)浏览器的支持情况

  现在主流的浏览器有3种,分别是IE,Chrome,Firefox。

  IE:在IE6-8版本中,对DOM的支持差不多是百分之十几差不多了,但是到了IE9就有了质的飞跃。

  Chrome:介于两者之间,在60%左右,对DOM支持的不是那么的好也不是那么的差。

  Firefox:对于DOM的支持几乎可以用99%来形容。

二、DOM节点

在CSS阶段,我们认为是标签;

在JS阶段,我们认为是元素;

在DOM阶段,我们认为是节点。

(1)childNodes

  

  获取子节点

特别注意,在Chrome中和IE9中,版本越高越会出现问题,它们会把空白文本也当做子节点,可是在IE6-8中却会正常运行,出现正确的子节点数,十分诡异。

文本节点,纯文本或者空白文本,比如aaaaa

元素节点,比如<span>aaaaaa</span>

  

  nodeType,节点的类型

nodeType==3——>文本节点

nodeType==1——>元素节点

将childNodes和nodeType配合起来使用

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>子节点</title>
<script>
window.onload = function()
{
    var oUl=document.getElementById(‘ul1‘);
    
    //alert(oUl.childNodes.length);/*在Chrome中,空的文本也会被当做子节点*/
    //nodeType==3——>文本节点
    //nodeType==1——>元素节点
    for(var i=0;i<oUl.childNodes.length;i++)
    {
        //alert(oUl.childNodes[i].nodeType);
        //判断子节点是不是元素节点
        if(oUl.childNodes[i].nodeType==1)
        {
            oUl.childNodes[i].style.background=‘red‘;
            }
        }
    };
</script>

</head>

<body>
<ul id="ul1">
    <li></li>
    <li></li>

</ul>

aaaaaaaa 文本节点
<span>aaaaaaaa元素节点</span>
</body>
</html>

  children——非常好用,它只包括元素节点却不包括文本节点

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>子节点</title>
<script>
window.onload = function()
{
    var oUl=document.getElementById(‘ul1‘);
    
    //alert(oUl.childNodes.length);/*在Chrome中,空的文本也会被当做子节点*/
    //nodeType==3——>文本节点
    //nodeType==1——>元素节点
    /*for(var i=0;i<oUl.childNodes.length;i++)
    {
        //alert(oUl.childNodes[i].nodeType);
        //判断子节点是不是元素节点
        if(oUl.childNodes[i].nodeType==1)
        {
            oUl.childNodes[i].style.background=‘red‘;
            }
        }*/
    alert(oUl.children.length);
    };
</script>

</head>

<body>
<ul id="ul1">
    <li></li>
    <li></li>

</ul>

aaaaaaaa 文本节点
<span>aaaaaaaa元素节点</span>
</body>
</html>

(2)parentNode,只要是父节点不变,是不会发生变化的

  例子:点击链接,隐藏整个li

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>父节点的应用</title>
<script>
window.onload = function()
{
    var aA=document.getElementsByTagName(‘a‘);
    
    for(var i=0;i<aA.length;i++)
    {
        aA[i].onclick = function ()
        {
            this.parentNode.style.display="none";/*this指代a的父节点是<li>,则把a所在的li隐藏掉*/
            };
        }
    };
</script>

</head>

<body>
<ul id="ul1">
    <li>aaaaaaa <a href="javascript:;">隐藏</a></li>
    <li>bbbbbbb <a href="javascript:;">隐藏</a></li>
    <li>ccccccc <a href="javascript:;">隐藏</a></li>
    <li>ddddddd <a href="javascript:;">隐藏</a></li>
    <li>eeeeeee <a href="javascript:;">隐藏</a></li>
</ul>

aaaaaaaa 文本节点
<span>aaaaaaaa元素节点</span>
</body>
</html>

(3)offsetParent——和parentNode不同,它是获取元素用来定位的父级,不一定是前一个父节点,只能是有定位的父节点,可能是上级可能是上上级等等

  获取元素在页面上的实际位置

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>offsetParent</title>
<style>
#div1{
    width:200px;
    height:200px;
    background-color:#CCC;
    margin:100px;
    position:relative;
    }
#div2{
    width:100px;
    height:100px;
    background-color:red;
    position:absolute;
    left:50px;
    top:50px;
    }
</style>
<script>
window.onload = function ()
{
    var oDiv2=document.getElementById(‘div2‘);
    
    alert(oDiv2.offsetParent);
    };
</script>
</head>

<body>
    <div id="div1">
        <div id="div2"></div>
    </div>
</body>
</html>

时间: 2024-10-23 00:41:07

【JS学习笔记】DOM基础-字节点,父节点的相关文章

JavaScript学习笔记——DOM基础 2.5

一.document.write方法 document对象write()方法,常用来向网页中输出字符串,圆括号中可以是要输出的字符串, document.write('这是我的个人博客'); 也可以是字符串变量, var myText = '这是我的个人博客'; document.write(myText); 还有一种,就是通过字符串和变量组合的方式进行输出. var myText = '这是我的'; document.write(myText + '个人博客'); document.write

原生js学习笔记——Ajax基础

1.什么是Ajax Ajax:是Asynchronous Javascript And XML的简写,即异步JavaScript和XML XMLHttpRequest 提供的异步,是指基于 ajax 的应用在服务器中的通信方式. 传统的 web 应用,每次用户向服务器请求获得新数据时,浏览器都会丢弃当前页面,而等待重新加载新的页面.这样一来,在服务器完全响应之前,用户浏览器将一片空白,用户的动作必须中断.而异步指用户发送请求后,完全无需等待,请求会在后台发送,不会阻塞用户当前活动.这样一来,用户

JavaScript学习笔记——DOM基础 2.1

一.DOM 1.DOM的基本概念 DOM是Document Object Model的缩写,意思是文本对象模型,也就是说,如果没有Document,DOM也就无从谈起.我们可以把创建的网页当作是一个Document对象. JavaScript的对象可以分为三种类型:由用户自定义的对象,由JavaScript本身提供的内建对象,以及由浏览器提供的宿主对象. 顺便提一下BOM(Browser Object Model)和WOM(Window Object Model),其实这两个说的是一种东西,但大

JS学习笔记1_基础与常识

1.六种数据类型 5种基础的:Undefined,Null,Boolean,Number,String(其中Undefined派生自Null) 1种复杂的:Object(本质是一组无序键值对) 2.字符串转数字 Number(str):先求值再转换(先valueOf再toString都不行就是NaN),一般与我们的预期结果不一样,比如Number(”)=Number(false)=Number(null)=0而var x;Number(x)=NaN...所以一般都用下面两种方式 parseInt

JavaScript学习笔记——DOM基础 2.6

一.CSS-DOM 1.清楚一个概念 HTML负责的是结构,CSS负责的是样式,JavaScript负责的是动作(行为). 2.style属性 语法:element.style 返回:object style相对于element是一个属性,而style本身是一个对象,它包含了诸多元素的样式. 关于这一点,可以根据后面的例子去理解. 3.获取样式 例子:element.style.fontFamily 返回:style对应属性的值,如fontFamily,返回“Microsoft yahei” 注

Node.js学习笔记【3】NodeJS基础、代码的组织和部署、文件操作、网络操作、进程管理、异步编程

一.表 学生表 CREATE TABLE `t_student` ( `stuNum` int(11) NOT NULL auto_increment, `stuName` varchar(20) default NULL, `birthday` date default NULL, PRIMARY KEY  (`stuNum`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 学生分数表 CREATE TABLE `t_stu_score` ( `id` int(11

【转】Backbone.js学习笔记(二)细说MVC

文章转自: http://segmentfault.com/a/1190000002666658 对于初学backbone.js的同学可以先参考我这篇文章:Backbone.js学习笔记(一) Backbone源码结构 1: (function() { 2: Backbone.Events // 自定义事件 3: Backbone.Model // 模型构造函数和原型扩展 4: Backbone.Collection // 集合构造函数和原型扩展 5: Backbone.Router // 路由

JavaScript高级程序设计学习笔记--DOM

DOM(文档对象模型)是针对HTML和XML文档的一个API(应用程序接口). Document类型 文档的子节点 虽然DOM标准规定Document节点的子节点可以是DocumentType,Element,ProcessingInstruction或Comment,但还有两个内置的访问其子节点的快捷方式.第一个就是documnetElement属性,该属性始终指向HTML页面中的<html>元素.另一个就是通过childNodes列表访问文档元素,但通过documentElement属性则

html学习笔记-DOM

html学习笔记-DOM Table of Contents 1. 什么是 DOM? 2. DOM 节点 3. DOM 方法 4. DOM 属性 5. DOM 访问 6. DOM 修改 7. DOM 事件 1 什么是 DOM? DOM 是 W3C (万维网联盟)的标准. DOM 定义了访问 HTML 和 XML 文档的标准: “W3C 文档对象模型 ( DOM ) 是中立于平台和语言的接口,它允许程序和脚本动态地访问和更新文档的内容.结构和样式. ” W3C DOM 标准被分为 3 个不同的部分

jQuery学习笔记——jQuery基础核心

代码风格 在jQuery程序中,不管是页面元素的选择.内置的功能函数,都是美元符号“$”来起始的.而这个“$”就是jQuery当中最重要且独有的对象:jQuery对象,所以我们在页面元素选择或执行功能函数的时候可以这么写: $(function () {}); //执行一个匿名函数 $(‘#box’);//进行执行的ID元素选择 $(‘#box’).css(‘color’, ‘red’);//执行功能函数由于$本身就是jQuery对象的缩写形式,那么也就是说上面的三段代码也可以写成如下形式:jQ