全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

javascript DOM的详解及实例代码

javascript DOM 总结

一直以为DOM(文档对象模型)是JS中最简单的一部分。不可否认,它确实很简单,因为DOM的思维模式有点固定,只需要简单地记住一些固定的方法,所以DOM可以说是所有js(这里指的是客户端的js)入门的起手点。

  最近我在做一些有用到DOM的练习时,发现自己的DOM知识非常零散(一直以为掌握的很好),可能有很多朋友都觉得,DOM嘛,也就调用调用几个方法,或者我直接使用jQuery,根本不用考虑DOM的细节。是,这也没错,jQuery对DOM的封装可谓前无古人,但是正如成长一样,跑之前是一定要会走的,所以我认为对DOM必须要有比较详细的了解,于是我总结了如下的关于DOM的一些使用方法。

  在W3C总结跪DOM规范中,有一些十分常用的,也有些不怎么有用的,这里我们主要讨论常用一些DOM操作(有关DOM的基本概念在此就不介绍了):

  节点层次

  所谓节点层次,指的是html文档中存在具有各自特点,数据,方法的节点(例如标签),节点之间的关系构成了层次(其实可以想象成树状结构)。W3C的DOM1级规范中定义了一个NODE接口。这个接口有一些方法是非常有用的:

  Node.ELEMENT_NODE;(元素节点)

  Node.TEXT_NODE;(文本节点)

  Node.DOCUMENT_NODE(文档节点)

  而每个节点都有自己的节点类型标志,也就是NodeType属性,例如元素节点的nodeType == '1';文本节点的nodeType == '3';文档节点的nodeType == '9';

  1.文档节点

    文档节点在一个文档中用document对象表示,它的基本特征如下:

console.log(document.nodeType); // 9 
console.log(document.nodeName); // #document 
console.log(document.nodeValue); // null 
console.log(document.parentNode); // null(它已经是最顶层的节点,树的根节点) 

   tip one (文档的子节点):

    1.document.documentElement可以取到html对象,同样可以通过document.childNodes[0]以及document.firstchild取到。然而 documentElement可以更快,更直接访问元素。

  tip two (文档的相关信息):

    1.取得文档标题 : document.title;

    2.取得完整的url : document.URL;

    3.取得域名(ip) : document.domain;

    4.取得页面的URL : document.referrer;

  tip three (文档查找元素):

    1.通过id : document.getElementById("xxx");  一般页面id会不同,若有多个相同id,则取到第一个有该id的元素。

    2.通过tagName : document.getElementsByTagName("xxx"); 返回标签名为"xxx"的元素集合!

    3.通过name : document.getElementByName();

  理解document对象非常简单,兼容性做的也比较靠前。

  2.元素节点

  元素节点提供了对元素标签名,子节点及特性的访问。它的基本特征如下:

var ele = document.getElementById("element"); //通过document取到一个标签对象 
console.log(ele.nodeType); // 1 
console.log(ele.nodeName); // 返回元素的标签名 
console.log(ele.nodeValue); //永远返回null! 

  tip one (html元素) :

    <div id="myDiv" class="bd" title="Body text" lang="en" dir="ltr"></div>

    var div = document.getElementById("div");

    1. console.log(div.id); // "myDiv"

    2. console.log(div.className); // "bd"

    3. console.log(div.title); // "Body text"

    4. console.log(div.lang); // "en"

    5. console.log(div.dir); // "ltr"

  tip two (取得,设置和删除特性):

    1.div.getAttribute("id"); // "myDiv"

    2.div.setAttribuye("id","yourDiv"); // id已变动

    3.div.removeAttribute("id"); //id已删除

    需要注意:  在IE7及以下的版本中,三种方法存在着一些异常行为,通过set设置class 和style特性,特别是事件处理程序时,没有任何效果,get也是同样的。因此一般开发要避免以上三种方法,推荐通过属性来设置特性。

  tip three (元素的子节点) :

    要重点提一下的就是这里了,有如下代码:

<ul id="myList"> 
  <li>Item 1</li> 
  <li>Item 2</li> 
  <li>Item 3</li> 
</ul> 
 
var mL = document.getElementById("myList"); 
//很明显mL对象有三个元素节点,我们也知道用childNodes属性去找到节点数,然而陷阱随之而来 
 
console.log(mL.childNodes); // 7 
//?!怎么会有7个? 
 
//原因在于childNodes中不仅包含了元素节点,还有4个文本节点。因此需要过滤 
 
for(var i=0,len=ml.childNodes.length;i<len;i++){ 
   if(ml.childNodes[i].nodeType == "1"){ // 利用元素节点的特性 
     // .... 
   }   
}<br>//最好的方法可以这么做<br>//如果元素对象内部标签名是一样的<br>var items = ml.getElementsByTagName("li"); //能得到三个li节点对象 
  

 3.文本节点

  文本节点包含的是可以照字面解释的纯文本内容,纯文本中可以包含转义后的HTML字符,但不能包含HTML代码。文本节点的基本特征如下:

<div id="myDiv">123</div> 
 
var myDiv = document.getElementById("myDiv") //取到元素节点 
var tx = myDiv.childNodes[0] //前面也提过childNodes的特性,这次取到了文本节点 
 
console.log(tx.nodeType) // 3 
console.log(tx.nodeName) // 所有文本节点的nodeName都是"#text"; 
console.log(tx.nodeValue) // 123(节点包含的文本),注意元素节点是不能取到它包含的文本节点的文本的 
 
//所以其父节点显然是个元素节点. 

 Tip one :

    创建文本节点的两个方法:document.createTextNode(),document.createText();

    创建好后不会直接嵌入文档中,需要引用。

var a = document.createElement("p");

    var b = document.createTextNode("123");

    a.appendChild(b);

    document.body.appendChild(a);

    这样在body末尾会出现<p>123</p>这样的标签

  个人认为DOM肯定是学习js的入门点,但是也需要很长时间的打磨。我看了DOM不少于三遍,仅仅是DOM1级规范,每次都有些新东西。如果你学习DOM,那么就一定要注意一些陷阱,同时也要多花时间琢磨。 

 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# JS  # DOM  # javascript  # DOM的详解  # DOM实例  # 如何用js判断dom是否有存在某class的值  # 详解Javascript中DOM的范围  # js 数据存储和DOM编程  # js常用DOM方法详解  # Javascript DOM事件操作小结(监听鼠标点击、释放  # 悬停、离开等)  # 原生JS和jQuery操作DOM对比总结  # 原生JS实现几个常用DOM操作API实例  # javascript事件捕获机制【深入分析IE和DOM中的事件模型】  # JS访问DOM节点方法详解  # 文档  # 自己的  # 三种  # 指的是  # 一直以为  # 部标  # 的是  # 都是  # 几个  # 是个  # 如果你  # 都有  # 很好  # 会有  # 我在  # 最好的  # 也就  # 多个  # 在此  # 也要 


相关文章: 公司网站制作费用多少,为公司建立一个网站需要哪些费用?  如何用PHP快速搭建CMS系统?  企业微网站怎么做,公司网站和公众号有什么区别?  贸易公司网站制作流程,出口贸易网站设计怎么做?  如何用搬瓦工VPS快速搭建个人网站?  如何在香港免费服务器上快速搭建网站?  江苏网站制作公司有哪些,江苏书法考级官方网站?  如何快速查询网址的建站时间与历史轨迹?  如何用美橙互联一键搭建多站合一网站?  Android自定义listview布局实现上拉加载下拉刷新功能  青岛网站建设如何选择本地服务器?  怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?  广东专业制作网站有哪些,广东省能源集团有限公司官网?  专业网站制作服务公司,有哪些网站可以免费发布招聘信息?  高防服务器如何保障网站安全无虞?  东莞专业制作网站的公司,东莞大学生网的网址是什么?  如何用已有域名快速搭建网站?  视频网站制作教程,怎么样制作优酷网的小视频?  小说建站VPS选用指南:性能对比、配置优化与建站方案解析  建站主机选哪家性价比最高?  建站之星在线版空间:自助建站+智能模板一键生成方案  南京网站制作费用,南京远驱官方网站?  宝盒自助建站智能生成技巧:SEO优化与关键词设置指南  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  如何在阿里云虚拟主机上快速搭建个人网站?  h5网站制作工具有哪些,h5页面制作工具有哪些?  建站之星北京办公室:智能建站系统与小程序生成方案解析  建站主机默认首页配置指南:核心功能与访问路径优化  在线教育网站制作平台,山西立德教育官网?  实现点击下箭头变上箭头来回切换的两种方法【推荐】  公司门户网站制作流程,华为官网怎么做?  如何选择高性价比服务器搭建个人网站?  建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析  购物网站制作公司有哪些,哪个购物网站比较好?  如何用5美元大硬盘VPS安全高效搭建个人网站?  ui设计制作网站有哪些,手机UI设计网址吗?  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  电脑免费海报制作网站推荐,招聘海报哪个网站多?  官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站  C++如何使用std::optional?(处理可选值)    企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?  长沙企业网站制作哪家好,长沙水业集团官方网站?  教育培训网站制作流程,请问edu教育网站的域名怎么申请?  如何在腾讯云服务器上快速搭建个人网站?  建站之星安装需要哪些步骤及注意事项?  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  ppt制作免费网站有哪些,ppt模板免费下载网站?  建站主机如何选?高性价比方案全解析 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。