首页  >  文章  >  web前端  >  HTML DOM基础知识 - *茉莉花开*

HTML DOM基础知识 - *茉莉花开*

WBOY
WBOY原创
2016-05-21 08:54:341150浏览

HTML DOM基础知识

一、什么是DOM?

1、HTML DOM 定义了访问和操作HTML文档的标准方法。

2、HTML DOM 把 HTML 文档呈现为带有元素、属性和文本的树结构(节点树)。

3、通过 JavaScript,您可以重构整个 HTML 文档。您可以添加、移除、改变或重排页面上的项目。要改变页面的某个东西,JavaScript 就需要获得对 HTML 文档中所有元素进行访问的入口。这个入口,连同对 HTML 元素进行添加、移动、改变或移除的方法和属性,都是通过文档对象模型来获得的(DOM)。DOM 可被 JavaScript 用来读取、改变 HTML、XHTML 以及 XML 文档。

4、DOM 被分为不同的部分(核心、XML及HTML)和级别(DOM Level 1/2/3):

     *Core DOM:定义了一套标准的针对任何结构化文档的对象
*XML DOM:定义了一套标准的针对 XML 文档的对象
    *HTML DOM:定义了一套标准的针对 HTML 文档的对象。 

 


二、HTML DOM节点及节点树

1、节点

根据 DOM,HTML 文档中的每个成分都是一个节点。

DOM 是这样规定的:

  • 整个文档是一个文档节点
  • 每个 HTML 标签是一个元素节点
  • 包含在 HTML 元素中的文本是文本节点
  • 每一个 HTML 属性是一个属性节点
  • 注释属于注释节点

2、Node 层次

节点彼此都有等级关系。

HTML 文档中的所有节点组成了一个文档树(或节点树)。HTML 文档中的每个元素、属性、文本等都代表着树中的一个节点。树起始于文档节点,并由此继续伸出枝条,直到处于这棵树最低级别的所有文本节点为止。

下面这个图片表示一个文档树(节点树):

3、节点树

<span style="color: #008080;">1</span> <span style="color: #0000ff;"><</span><span style="color: #800000;">html</span><span style="color: #0000ff;">></span>
<span style="color: #008080;">2</span>   <span style="color: #0000ff;"><</span><span style="color: #800000;">head</span><span style="color: #0000ff;">></span>
<span style="color: #008080;">3</span>     <span style="color: #0000ff;"><</span><span style="color: #800000;">title</span><span style="color: #0000ff;">></span>DOM Tutorial<span style="color: #0000ff;"></</span><span style="color: #800000;">title</span><span style="color: #0000ff;">></span> 
<span style="color: #008080;">4</span>   <span style="color: #0000ff;"></</span><span style="color: #800000;">head</span><span style="color: #0000ff;">></span> 
<span style="color: #008080;">5</span>   <span style="color: #0000ff;"><</span><span style="color: #800000;">body</span><span style="color: #0000ff;">></span> 
<span style="color: #008080;">6</span>     <span style="color: #0000ff;"><</span><span style="color: #800000;">h1</span><span style="color: #0000ff;">></span>DOM Lesson one<span style="color: #0000ff;"></</span><span style="color: #800000;">h1</span><span style="color: #0000ff;">></span> 
<span style="color: #008080;">7</span>     <span style="color: #0000ff;"><</span><span style="color: #800000;">p</span><span style="color: #0000ff;">></span>Hello world!<span style="color: #0000ff;"></</span><span style="color: #800000;">p</span><span style="color: #0000ff;">></span> 
<span style="color: #008080;">8</span>   <span style="color: #0000ff;"></</span><span style="color: #800000;">body</span><span style="color: #0000ff;">></span> 
<span style="color: #008080;">9</span> <span style="color: #0000ff;"></</span><span style="color: #800000;">html</span><span style="color: #0000ff;">></span>

  上面所有的节点彼此间都存在关系

  *除文档节点之外的每个节点都有父节点。举例, 和 的父节点是 节点,文本节点 "Hello world!" 的父节点是

节点。

  *大部分元素节点都有子节点。比方说, 节点有一个子节点: 节点。<title> 节点也有一个子节点:文本节点 "DOM Tutorial"。</p> <p>  *当节点分享同一个父节点时,它们就是<span style="color: #ff0000;"><em>同辈(同级节点)</em></span>。比方说,<h1> 和 <p>是同辈,因为它们的父节点均是 <body> 节点。</p> <p>  *节点也可以拥有<span style="color: #ff0000;"><em>后代</em></span>,后代指某个节点的所有子节点,或者这些子节点的子节点,以此类推。比方说,所有的文本节点都是 <html>节点的后代,而第一个文本节点是 <head> 节点的后代。</p> <p>  *节点也可以拥有<span style="color: #ff0000;"><em>先辈</em></span>。先辈是某个节点的父节点,或者父节点的父节点,以此类推。比方说,所有的文本节点都可把 <html> 节点作为先辈节点。</p> <hr> <h2>三、HTML DOM访问节点的方法</h2> <p>1.查找并访问节点</p> <p>你可通过若干种方法来查找您希望操作的元素:</p> <ul> <li>通过使用 getElementById() 和 getElementsByTagName() 方法</li> <li>通过使用一个元素节点的 parentNode、firstChild 以及 lastChild 属性 </li> </ul> <p><strong><span style="color: #ff0000;">2.</span><span style="color: #ff0000;">getElementById()</span> </strong>和 <strong><span style="color: #ff0000;">getElementsByTagName()</span></strong></p> <p><strong><span style="color: #ff0000;">(1)getElementById() 可通过指定的 ID 来返回元素,语法:</span></strong></p> <div class="cnblogs_code"> <pre class="brush:php;toolbar:false">document.getElementById("ID"); </pre> </div> <p> </p> <p><strong><span style="color: #ff0000;">(2)getElementsByTagName() 方法会使用指定的标签名<span style="background-color: #99cc00;">返回所有的元素</span>(作为一个节点列表),这些元素是您在使用此方法时所处的元素的后代。getElementsByTagName() 可被用于任何的 HTML 元素:</span></strong></p> <p><strong><span style="color: #ff0000;">语法:</span></strong></p> <div class="cnblogs_code"> <pre class="brush:php;toolbar:false">document.getElementsByTagName("标签名称"); </pre> </div> <p><strong><span style="color: #ff0000;">或者:</span></strong></p> <div class="cnblogs_code"> <pre class="brush:php;toolbar:false">document.getElementById('ID').getElementsByTagName("标签名称"); </pre> </div> <p><span style="background-color: #99cc00;"><访问节点列表时,索引号从0开始></span></p> <p><span style="color: #ff0000;"><strong>3.parentNode、firstChild以及lastChild</strong></span></p> <p>这三个属性 parentNode、firstChild 以及 lastChild 可遵循文档的结构,在文档中进行“短距离的旅行”。对 firstChild 最普遍的用法是访问某个元素的文本;parentNode 属性常被用来改变文档的结构;</p> <p>4.根节点</p> <p>有两种特殊的文档属性可用来访问根节点:</p> <ul> <li>document.documentElement</li> <li>document.body</li> </ul> <p>第一个属性可返回存在于 XML 以及 HTML 文档中的文档根节点。</p> <p>第二个属性是对 HTML 页面的特殊扩展,提供了对 <body> 标签的直接访问。</p> <p> </p> <p> </p> <p> </p> <hr> <h2>四.节点信息</h2> <p><span style="color: #ff0000;">每个节点都拥有包含着关于节点某些信息的属性。这些属性是:</span></p> <ul> <li><span style="color: #ff0000;">nodeName(节点名称)</span></li> <li><span style="color: #ff0000;">nodeValue(节点值)</span></li> <li> <span style="color: #ff0000;">nodeType(节点类型)</span> </li> </ul> <div> <p>1.nodeName</p> <p>nodeName 属性含有某个节点的名称。</p> <ul> <li>元素节点的 nodeName 是标签名称</li> <li>属性节点的 nodeName 是属性名称</li> <li><span style="color: #ff0000;">文本节点的 nodeName 永远是 #text</span></li> <li><span style="color: #ff0000;">文档节点的 nodeName 永远是 #document</span></li> </ul> <p class="note">注释:nodeName 所包含的 XML 元素的标签名称永远是大写的</p> </div> <div> <p>2.nodeValue</p> <p>对于文本节点,nodeValue 属性包含文本。</p> <p>对于属性节点,nodeValue 属性包含属性值。</p> <p>nodeValue 属性对于文档节点和元素节点是不可用的。</p> </div> <div> <p>3.nodeType</p> <p>nodeType 属性可返回节点的类型。</p> <hr> <br> <p> </p> </div> <div id="MySignature"></div> <div class="clear"></div> </div><div class="nphpQianMsg"><div class="clear"></div></div><div class="nphpQianSheng"><span>声明:</span><div>本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn</div></div></div><div class="nphpSytBox"><span>上一篇:<a class="dBlack" title="深入理解CSS定位中的偏移 - 小火柴的蓝色理想" href="http://m.php.cn/zh/faq/42762.html">深入理解CSS定位中的偏移 - 小火柴的蓝色理想</a></span><span>下一篇:<a class="dBlack" title="HTML5与CSS3基础教程第八版学习笔记7~10章 - 平凡世界平凡人" href="http://m.php.cn/zh/faq/42764.html">HTML5与CSS3基础教程第八版学习笔记7~10章 - 平凡世界平凡人</a></span></div><div class="nphpSytBox2"><div class="nphpZbktTitle"><h2>相关文章</h2><em><a href="http://m.php.cn/zh/article.html" class="bBlack"><i>查看更多</i><b></b></a></em><div class="clear"></div></div><ins class="adsbygoogle" style="display:block" data-ad-format="fluid" data-ad-layout-key="-6t+ed+2i-1n-4w" data-ad-client="ca-pub-5902227090019525" data-ad-slot="8966999616"></ins><script> (adsbygoogle = window.adsbygoogle || []).push({}); </script><ul class="nphpXgwzList"><li><b></b><a href="http://m.php.cn/zh/faq/348757.html" title="Html小知识总结" class="aBlack">Html小知识总结</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/zh/faq/348804.html" title="如何快速学习HTML" class="aBlack">如何快速学习HTML</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/zh/faq/348873.html" title="html xhtml xml的区别" class="aBlack">html xhtml xml的区别</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/zh/faq/348884.html" title="src与href属性的区别" class="aBlack">src与href属性的区别</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/zh/faq/348902.html" title="关于HTML5和CSS替换使用" class="aBlack">关于HTML5和CSS替换使用</a><div class="clear"></div></li></ul></div></div><ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-5902227090019525" data-ad-slot="5027754603"></ins><script> (adsbygoogle = window.adsbygoogle || []).push({}); </script><footer><div class="footer"><div class="footertop"><img src="/static/imghwm/logo.png" alt=""><p>公益在线PHP培训,帮助PHP学习者快速成长!</p></div><div class="footermid"><a href="http://m.php.cn/zh/about/us.html">关于我们</a><a href="http://m.php.cn/zh/about/disclaimer.html">免责声明</a><a href="http://m.php.cn/zh/update/article_0_1.html">Sitemap</a></div><div class="footerbottom"><p> © php.cn All rights reserved </p></div></div></footer><script>isLogin = 0;</script><script type="text/javascript" src="/static/layui/layui.js"></script><script type="text/javascript" src="/static/js/global.js?4.9.47"></script></div><script src="https://vdse.bdstatic.com//search-video.v1.min.js"></script><link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css' type='text/css' media='all'/><script type='text/javascript' src='/static/js/viewer.min.js?1'></script><script type='text/javascript' src='/static/js/jquery-viewer.min.js'></script><script>jQuery.fn.wait = function (func, times, interval) { var _times = times || -1, //100次 _interval = interval || 20, //20毫秒每次 _self = this, _selector = this.selector, //选择器 _iIntervalID; //定时器id if( this.length ){ //如果已经获取到了,就直接执行函数 func && func.call(this); } else { _iIntervalID = setInterval(function() { if(!_times) { //是0就退出 clearInterval(_iIntervalID); } _times <= 0 || _times--; //如果是正数就 -- _self = $(_selector); //再次选择 if( _self.length ) { //判断是否取到 func && func.call(_self); clearInterval(_iIntervalID); } }, _interval); } return this; } $("table.syntaxhighlighter").wait(function() { $('table.syntaxhighlighter').append("<p class='cnblogs_code_footer'><span class='cnblogs_code_footer_icon'></span></p>"); }); $(document).on("click", ".cnblogs_code_footer",function(){ $(this).parents('table.syntaxhighlighter').css('display','inline-table');$(this).hide(); }); $('.nphpQianCont').viewer({navbar:true,title:false,toolbar:false,movable:false,viewed:function(){$('img').click(function(){$('.viewer-close').trigger('click');});}}); </script></body></html>