《JavaScript DOM 编程艺术》读书笔记之DOM基础


Posted in Javascript onJanuary 09, 2015

DOM
      
      DOM:文档对象模型;

节点

       元素节点:DOM的原子是元素节点。<body>、<p>、<ul>之类的元素。元素可以包含其他的元素。没有被包含在其他元素里的唯一元素是<html>元素

       文本节点:在XHTML文档里,文本节点总是被包含在元素节点的内部。

       属性节点:属性节点用来对元素做出更具体的描述。例如,几乎每个元素都有一个title属性,而我们可以利用这个属性对包含在元素里的东西作出准确的描述:

       <p title="a gentle reminder">Don't forget to buy this stuff.</p>

       在DOM中,title="a gentle reminder"是一个属性节点。

CSS

     获取元素
      getElementById, getElementsByTagName, getElementsByClassName三种可以获取元素节点的方法。

      getElementsByTagName允许把一个通配符作为它的参数,而这意味着文档里的每个元素都将在这个函数所返回的数组里占有一席之地。通配符(“*”)必须在引号里,这是为了和乘法操作有所区别。

      还可以把getElementById和getElementsByTagName结合起来运用。如下所示:

      var shopping = document.getElementById("purchase");

      var items = shopping.getElementsByTagName("*");

      这样就可以得到id属性值为purchase的元素包含着多少个元素。

      getElementsByClassName方法只有较新的浏览器才支持。为了弥补这一点,DOM脚本程序员需要使用已有的DOM方法来实现自己的getElementsByClassName。而多数情况下,他们的实现过程都与下面这个getElementsByClassName大致相似:

      function getElementsByClassName(node, classname){

        if(node.getElementsByClassName){

          return node.getElementsByClassName(classname);

        }else{

          var results = new Array();

          var elems = node.getElementsByTagName("*");

          for(var i=0;i<elems.length;i++){

            if(elems[i].className.indexOf(classname) != -1){

              results[results.length] = elems[i];

            }

         }

         return results;

      }

   }

   这个getElementsByClassName函数接受两个参数,第一个node表示DOM树中的搜素起点,第二个classname就是要搜索的类名了。

获取和设置属性

     getAttribute是一个函数,它只有一个参数——你打算查询的属性的名字:

     object.getAttribute(attribute)

     setAttribute()允许我们对属性节点的值做出修改。通过setAttribute对文档作出修改后,在通过浏览器的view source(查看源代码)选项去查看文档的源代码时看到的仍将是改变前的属性值,也就是说,setAttribute做出的修改不会反映在文档本身的源代码里。这种“表里不一”的现象源自DOM的工作模式:先加载文档的静态内容,再动态刷新,动态刷新不影响文档的静态内容。这正是DOM的真正威力:对页面内容进行刷新却不需要在浏览器里刷新页面。

Javascript 相关文章推荐
jquery多浏览器捕捉回车事件代码
Jun 22 Javascript
jQuery中append、insertBefore、after与insertAfter的简单用法与注意事项
Apr 04 Javascript
JQuery对表格进行操作的常用技巧总结
Apr 23 Javascript
Javascript this 关键字 详解
Oct 22 Javascript
JavaScript实现的内存数据库LokiJS介绍和入门实例
Nov 17 Javascript
Javascript中prototype属性实现给内置对象添加新的方法
May 14 Javascript
有关JavaScript中call()和apply() 的一些理解
May 20 Javascript
vue.js单页面应用实例的简单实现
Apr 10 Javascript
Angular中的interceptors拦截器
Jun 25 Javascript
微信小程序实现YDUI的ScrollNav组件
Feb 02 Javascript
jQuery 选择方法及$(this)用法实例分析
May 19 jQuery
React配置子路由的实现
Jun 03 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 语法
Jan 09 #Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 简史
Jan 09 #Javascript
javascript获取四位数字或者字母的随机数
Jan 09 #Javascript
JS JQUERY实现滚动条自动滚到底的方法
Jan 09 #Javascript
JavaScript Math.ceil 方法(对数值向上取整)
Jan 09 #Javascript
封装好的js判断操作系统与浏览器代码分享
Jan 09 #Javascript
JavaScript Math.floor方法(对数值向下取整)
Jan 09 #Javascript
You might like
PHP4实际应用经验篇(1)
2006/10/09 PHP
php做下载文件的实现代码及文件名中乱码解决方法
2011/02/03 PHP
如何批量清理系统临时文件(语言:C#、 C/C++、 php 、python 、java )
2016/02/01 PHP
详解Yii2.0使用AR联表查询实例
2017/06/16 PHP
PHP+jQuery实现即点即改功能示例
2019/02/21 PHP
PHP开发的文字水印,缩略图,图片水印实现类与用法示例
2019/04/12 PHP
javascript背投广告代码的完善
2008/04/08 Javascript
js实现网站首页图片滚动显示
2013/02/04 Javascript
jQuery判断复选框是否勾选的原理及示例
2014/05/21 Javascript
jquery html动态添加的元素绑定事件详解
2016/05/24 Javascript
node.js中module.exports与exports用法上的区别
2016/09/02 Javascript
bootstrap制作jsp页面(根据值让table显示选中)
2017/01/05 Javascript
jQuery对table表格进行增删改查
2020/12/22 Javascript
JavaScript实现一个空中避难的小游戏
2017/06/06 Javascript
Three.js加载外部模型的教程详解
2017/11/10 Javascript
使用ECharts实现状态区间图
2018/10/25 Javascript
JS字符串常用操作方法实例小结
2019/06/24 Javascript
python操作xml文件详细介绍
2014/06/09 Python
Python写的贪吃蛇游戏例子
2014/06/16 Python
python安装以及IDE的配置教程
2015/04/29 Python
使用Python对Csv文件操作实例代码
2017/05/12 Python
python爬取网页转换为PDF文件
2018/06/07 Python
django 使用 PIL 压缩图片的例子
2019/08/16 Python
OpenCV Python实现拼图小游戏
2020/03/23 Python
Python Selenium截图功能实现代码
2020/04/26 Python
django和flask哪个值得研究学习
2020/07/31 Python
Django扫码抽奖平台的配置过程详解
2021/01/14 Python
德国机场停车位比较和预订网站:Ich-parke-billiger
2018/01/08 全球购物
英文版销售经理个人求职信
2013/11/20 职场文书
产品质量承诺书范文
2014/03/27 职场文书
交通事故协议书
2014/04/15 职场文书
四风查摆问题自查报告
2014/10/10 职场文书
2014年内勤工作总结
2014/11/24 职场文书
2015年幼儿园大班工作总结
2015/04/25 职场文书
志愿者工作心得体会
2016/01/15 职场文书
请假条应该怎么写?
2019/06/24 职场文书