热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

HTMLDOM系列教程之节点(二)-node属性与node方法

上次我们学习了通过getElementById()方法和getElementsByTagName()方法来访问节点,那么我们接着上次的内容继续学习parentNode、firstChild、lastChild等node属性与appendChild()、removeChild

上次我们学习了通过getElementById()方法和getElementsByTagName()方法来访问节点,那么我们接着上次的内容继续学习parentNode、firstChild、lastChild等node属性与appendChild()、removeChild()、replaceChild()等一些node方法。    

首先我们来看一下下面这个 HTML 片段:    

1
2
3
4
5
6
    
    
  • 首页
  •     
        
  • HTML5
  •     
        
  • CSS3
  •     
        
  • Javascript
  •     

    在上面的HTML代码中,第一个

    • 元素的首个子元素,即firstChild,而最后一个
      • 元素的最后一个子元素,即lastChild。此外,
          是每个
        • 元素的父节点,即parentNode。    

          1、对 firstChild 最普遍的用法是访问某个元素的文本:    

          1
          2
          varoX = [getElementObj];    
          vartext = oX.firstChild.nodeValue;

          比如我们想取得导航列表mainNav的第一个li里面的内容,那么我们就可以这样做:    

          Demo01    

          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          14
          15
          16
          17
          18
          19
          20
          21
          22
          23
              
              
               
                
                
               
               
                  
                  首页    
                  
        • HTML5
        •     
                  
        • CSS3
        •     
                  
        • Javascript
        •     
                  
                  
               

          2、parentNode 属性常被用来改变文档的结构。假如我们希望从文档中删除带有 id 为”css3”的节点,那么我们就可以这么做:    

          1
          2
          varoCss3 = document.getElementById("css3");    
          parentNode.removeChild(oCss3);

          这时当页面载入时就没有CSS3了    

          3、对lastChild的用法同firstChild    

          4、previousSibling属性,指向前一个兄弟节点    

          Demo2    

          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          14
          15
          16
          17
          18
          19
          20
          21
          22
          23
              
              
               
                
                
               
               
                  
                  
        • 首页
        •     
                  HTML5    
                  
        • CSS3
        •     
                  
        • Javascript
        •     
                  
                  
               

          对于上面弹窗的的结果:E6,7,8结果为"LI" , IE9,10 ,FF ,Chrome结果为#text。原因是因为 IE9,10 ,FF ,Chrome会把空格换行等排版元素也视为节点处理。那么我们该怎么解决这个兼容问题呢,请看下面的Demo3:    

          Demo3    

          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          14
          15
          16
          17
          18
          19
          20
          21
          22
          23
              
              
               
                
                
               
               
                  
                  
        • 首页
        •     
                  HTML5    
                  
        • CSS3
        •     
                  
        • Javascript
        •     
                  
                  
               

          这样IE6,7,8,9,10及FF和Chrome就都能兼容了,由此我们可以从”preNode.nodeName“类推,用previousSibling做一些其他事情。    

          5、nextSibling属性,指向后一个兄弟节点。其用法同previousSibling。    

          6、根节点    

          有两种特殊的文档属性可用来访问根节点:    

          1
          2
          document.documentElement//返回存在于 XML 以及 HTML 文档中的文档根节点    
          document.body//对 HTML 页面的特殊扩展,提供了对 标签的直接访问

          7、关于节点的信息nodeName、nodeValue 以及 nodeType    

          (1)、nodeName:节点的名称    

          a、元素节点的 nodeName 是标签名称,返回的标签名称为大写      

          //如document.getElementById(id).nodeName;    

          b、属性节点的 nodeName 是属性名称   //???疑惑中    

          c、文本节点的 nodeName 永远是 #text    

          //如上面Demo01中的oHome.firstChild.nodeName;    

          d、文档节点的 nodeName 永远是 #document    //如document.nodeName;    

          (2)、nodeValue:节点的值    

          a、对于文本节点,nodeValue 属性包含文本,如上面Demo01中的var textHome = oHome.firstChild.nodeValue;alert(“textHome”);    

          b、对于属性节点,nodeValue 属性包含属性值。//???疑惑中    

          c、nodeValue 属性对于文档节点和元素节点是不可用的    

          (3)、nodeType:节点的类型,返回的结果可能为1,2,3,8,9。它们表示的意义为:    

          1代表元素类型,2代表属性类型,3代表文本类型,8代表注释类型,9代表文档类型    

          8、appendChild()方法,给指定节点添加一个新的子节点    

          Demo4    

          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          14
          15
          16
          17
          18
          19
          20
          21
          22
          23
          24
          25
          26
          27
          28
          29
              
              
               
                
                
                
               
               
                  
                  
        • 首页
        •     
                  HTML5    
                  CSS3    
                  
        • Javascript
        •     
                  
                  
               

          9、removeChild()方法,移除指定节点的子节点    

          Demo5    

          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          14
          15
          16
          17
          18
          19
          20
          21
          22
          23
          24
          25
          26
          27
          28
          29
          30
          31
              
              
               
                
                
                
               
               
                  
                  
        • 首页
        •     
                  HTML5HOT    
                  CSS3    
                  
        • Javascript
        •     
                  
                  
               

          10、replaceChild(newChild,oldChild),替换指定节点的子节点    

          Demo6    

          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          14
          15
          16
          17
          18
          19
          20
          21
          22
          23
          24
          25
          26
          27
          28
          29
          30
          31
          32
          33
          34
          35
          36
          37
              
              
               
                
                
                
               
               
                  
                  
        • 首页
        •     
                  HTML5HOT    
                  CSS3    
                  
        • Javascript
        •     
                  
                  
               

          11、insertBefore(newChild,oldChild),在同一级的节点前面插入新节点    

          Demo7  在Javascript前插入JQuery    

          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          14
          15
          16
          17
          18
          19
          20
          21
          22
          23
          24
          25
              
              
               
                
                
               
               
                  
                  
        • 首页
        •     
                  
        • HTML5
        •     
                  
        • CSS3
        •     
                  
        • Javascript
        •     
                  
                  
               

          12、hasChildNodes(),判断节点是否有子节点,如果有则返回true    

          Demo8    

          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          14
          15
          16
          17
          18
          19
          20
          21
              
              
               
                
                
               
               
                  
                  
        • 首页
        •     
                  
        • HTML5
        •     
                  
        • CSS3
        •     
                  
        • Javascript
        •     
                  
                  
               


          那么,我们这部分内容就结束了。    


  • 推荐阅读
    • 本文旨在构建一个JavaScript函数,用于对用户输入的电子邮件地址和密码进行有效性验证。该函数将确保输入符合标准格式,并检查密码强度,以提升用户账户的安全性。通过集成正则表达式和条件判断语句,该方法能够有效防止常见的输入错误,同时提供即时反馈,改善用户体验。 ... [详细]
    • 当前,众多初创企业对全栈工程师的需求日益增长,但市场中却存在大量所谓的“伪全栈工程师”,尤其是那些仅掌握了Node.js技能的前端开发人员。本文旨在深入探讨全栈工程师在现代技术生态中的真实角色与价值,澄清对这一角色的误解,并强调真正的全栈工程师应具备全面的技术栈和综合解决问题的能力。 ... [详细]
    • 本文深入探讨了 HTML 中的 `margin` 属性,详细解析了其基本特性和应用场景。文章不仅介绍了 `margin` 的基本概念,还重点讨论了垂直外边距合并现象,并分析了 `margin` 在块级元素与内联元素中的不同表现。通过实例和代码示例,帮助读者全面理解 `margin` 的使用技巧和常见问题。 ... [详细]
    • HTML5 Web存储技术是许多开发者青睐本地应用程序的重要原因之一,因为它能够实现在客户端本地存储数据。HTML5通过引入Web Storage API,使得Web应用程序能够在浏览器中高效地存储数据,从而提升了应用的性能和用户体验。相较于传统的Cookie机制,Web Storage不仅提供了更大的存储容量,还简化了数据管理和访问的方式。本文将从基础概念、关键技术到实际应用,全面解析HTML5 Web存储技术,帮助读者深入了解其工作原理和应用场景。 ... [详细]
    • 定义Function类型:1functionsum(num1,num2){return num1+num2;}2varsumfunction(num1,num2){returnn ... [详细]
    • Markdown语法说明:http:www.appinn.commarkdown1、前端碎片知识总结篇1.1关于浏览器IE的内核是Trident、Mozilla的内核 ... [详细]
    • 开发工具WebDeveloper1.1.8https:addons.mozilla.orgen-USfirefoxaddon60以工具栏的形式对网页的(X)HTML、脚本、多媒体、 ... [详细]
    • CSS深入剖析text和column
      这里写目录标题一、text-shadow二、font-face三、其他text常用特性四、column一、text-shadow与box-shadow类似,这里通过 ... [详细]
    • 本文详细解析了如何利用Appium与Python在真实设备上执行测试示例的方法。首先,需要开启手机的USB调试功能;其次,通过数据线将手机连接至计算机并授权USB调试权限。最后,在命令行工具中验证设备连接状态,确保一切准备就绪,以便顺利进行测试。 ... [详细]
    • 1.CSS3圆角border-radius属性一个最多可指定四个border-*-radius属性的复合属性,这个属性允许你为元素添加圆角边框!语法:border-radius:1 ... [详细]
    • 【转】JS键盘按钮keyCode及示例大全(JS前端)
      文章目录以功能区分布以keycode编号顺序分布简记表使用示例:组合键获取用户按下的键javascript判断是否按回车键屏蔽按键组合健获取键和相应值的js回目录 ... [详细]
    • 小编给大家分享一下Css3中box-pack属性怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收 ... [详细]
    • SoIhaveanappthathasarightsidebarwhosevisibilityistoggledviaabutton.Inthatsidebar ... [详细]
    • IIS启用Gzip的方法与优缺点分析是千自学中一篇关于Discuz论坛的文章简介:现代的浏览器IE6和Firefox都支持客户端Gzip,也就是说,在服务器上的网页,传输之前,先使用Gzip压缩再传输给客户端,客户端接收之后由浏览器解压显示,这样虽然稍微占用了一些服务器和客户端的C ... [详细]
    • Dom捕捉事件和冒泡事件原理与demo测试
      先参考一下百度百科对冒泡事件流的解释:----------不喜欢读文字的同学,可以直接看下面demo,传递顺序简单明了!ht ... [详细]
    author-avatar
    西红柿
    这个家伙很懒,什么也没留下!
    PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有