《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 继承详解 第一篇
Aug 30 Javascript
HTML node相关的一些资料整理
Jan 01 Javascript
Javascript连接多个数组不用concat来解决
Mar 24 Javascript
详解JavaScript对Date对象的操作问题(生成一个倒数7天的数组)
Oct 01 Javascript
WebSocket+node.js创建即时通信的Web聊天服务器
Aug 08 Javascript
jquery获取input type=text中的值的各种方式(总结)
Dec 02 Javascript
Vuejs仿网易云音乐实现听歌及搜索功能
Mar 30 Javascript
基于jQuery实现Ajax验证用户名是否可用实例
Mar 25 jQuery
JavaScript使用math.js进行精确计算操作示例
Jun 19 Javascript
layui弹出层按钮提交iframe表单的方法
Aug 20 Javascript
vue.js 实现点击按钮动态添加li的方法
Sep 07 Javascript
javascript自定义加载loading效果
Sep 15 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
php $_SERVER[&quot;REQUEST_URI&quot;]获取值的通用解决方法
2010/06/21 PHP
PHP中使用localhost连接Mysql不成功的解决方法
2014/08/20 PHP
详解php 使用Callable Closure强制指定回调类型
2017/10/26 PHP
jQuery基础知识filter()和find()实例说明
2010/07/06 Javascript
javascript错误的认识不用关心内存管理
2012/12/15 Javascript
TextArea设置MaxLength属性最大输入值的js代码
2012/12/21 Javascript
简单的jquery左侧导航栏和页面选中效果
2014/08/21 Javascript
IE浏览器IFrame对象内存不释放问题解决方法
2014/08/22 Javascript
javascript实现博客园页面右下角返回顶部按钮
2015/02/22 Javascript
jQuery实现购物车计算价格功能的方法
2015/03/25 Javascript
js导出excel文件的简洁方法(推荐)
2016/11/02 Javascript
微信小程序 特效菜单抽屉效果实例代码
2017/01/11 Javascript
js仿微信抢红包功能
2020/09/25 Javascript
SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题的解决方法
2018/01/09 Javascript
weui中的picker使用js进行动态绑定数据问题
2019/11/06 Javascript
Bootstrap table 服务器端分页功能实现方法示例
2020/06/01 Javascript
在Python3中初学者应会的一些基本的提升效率的小技巧
2015/03/31 Python
Bottle框架中的装饰器类和描述符应用详解
2017/10/28 Python
Python并行分布式框架Celery详解
2018/10/15 Python
python3 http提交json参数并获取返回值的方法
2018/12/19 Python
python实现抠图给证件照换背景源码
2019/08/20 Python
Python制作词云图代码实例
2019/09/09 Python
Python彻底删除文件夹及其子文件方式
2019/12/23 Python
Python输出指定字符串的方法
2020/02/06 Python
Python读取配置文件(config.ini)以及写入配置文件
2020/04/08 Python
夏洛特和乔治婴儿和儿童时装精品店:Charlotte and George
2018/06/06 全球购物
JPA面试常见问题
2016/11/14 面试题
应届生学校辅导员求职信
2013/11/07 职场文书
培训心得体会
2013/12/29 职场文书
真诚的求职信
2014/07/04 职场文书
学校节能宣传周活动总结
2014/07/09 职场文书
2014年会计工作总结
2014/11/27 职场文书
教学督导岗位职责
2015/04/10 职场文书
2016年寒假社会实践活动总结
2015/10/10 职场文书
javascript条件式访问属性和箭头函数介绍
2021/11/17 Javascript
MySQL日期时间函数知识汇总
2022/03/17 MySQL