《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 相关文章推荐
面向对象的Javascript之一(初识Javascript)
Jan 20 Javascript
JS中实现简单Formatter函数示例代码
Aug 19 Javascript
JavaScript中判断页面关闭、页面刷新的实现代码
Aug 27 Javascript
javascript弹性运动效果简单实现方法
Jan 08 Javascript
JavaScript DOM 对象深入了解
Jul 20 Javascript
loading动画特效小结
Jan 22 Javascript
鼠标拖动改变DIV等网页元素的大小的实现方法
Jul 06 Javascript
angular 用Observable实现异步调用的方法
Dec 27 Javascript
如何在项目中使用log4.js的方法步骤
Jul 16 Javascript
小程序怎样让wx.navigateBack更好用的方法实现
Nov 01 Javascript
vue实现五子棋游戏
May 28 Javascript
vue绑定class的三种方法
Dec 24 Vue.js
《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
PHP新手上路(七)
2006/10/09 PHP
PHP strtr() 函数使用说明
2008/11/21 PHP
PHP中利用substr_replace将指定两位置之间的字符替换为*号
2011/01/27 PHP
Uncaught exception com_exception with message Failed to create COM object
2012/01/11 PHP
PHP使用GIFEncoder类生成的GIF动态图片验证码
2014/07/01 PHP
windows下安装php的memcache模块的方法
2015/04/07 PHP
thinkPHP中验证码的简单实现方法
2016/12/05 PHP
关于PHP中协程和阻塞的一些理解与思考
2017/08/11 PHP
Laravel框架学习笔记之批量更新数据功能
2019/05/30 PHP
javascript下有关dom以及xml节点访问兼容问题
2007/11/26 Javascript
jquery.boxy插件的iframe扩展代码
2010/07/02 Javascript
javascript变量声明实例分析
2015/04/25 Javascript
JS动态加载脚本并执行回调操作
2016/08/24 Javascript
jQuery leonaScroll 1.1 自定义滚动条插件(推荐)
2016/09/17 Javascript
利用jquery实现实时更新歌词的方法
2017/01/06 Javascript
JavaScript实现隐藏省略文字效果的方法
2017/04/27 Javascript
Vue组件之Tooltip的示例代码
2017/10/18 Javascript
react-router v4如何使用history控制路由跳转详解
2018/01/09 Javascript
JavaScript基础之静态方法和实例方法分析
2018/12/26 Javascript
小程序绑定用户方案优化小结
2019/05/15 Javascript
[01:09]2014DOTA2国际邀请赛 TI4西雅图DOTA2 中国美女coser加油助威
2014/07/20 DOTA
Python版微信红包分配算法
2015/05/04 Python
Python Django 添加首页尾页上一页下一页代码实例
2019/08/21 Python
python实现银行管理系统
2019/10/25 Python
django admin管理工具自定义时间区间筛选器DateRangeFilter介绍
2020/05/19 Python
python实现录音功能(可随时停止录音)
2020/10/26 Python
毕业生就业自荐信
2013/12/04 职场文书
上班上网检讨书
2014/01/29 职场文书
马智宇婚礼主持词
2014/03/22 职场文书
经贸日语专业自荐信
2014/09/02 职场文书
大学毕业生个人总结
2015/02/28 职场文书
2015年学校禁毒工作总结
2015/05/27 职场文书
《观察物体》教学反思
2016/02/17 职场文书
python的变量和简单数字类型详解
2021/09/15 Python
68行Python代码实现带难度升级的贪吃蛇
2022/01/18 Python
Android存储中最基本的文件存储方式
2022/04/30 Java/Android