《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 相关文章推荐
网站页面自动跳转实现方法PHP、JSP(上)
Aug 01 Javascript
JavaScript 错误处理与调试经验总结
Aug 10 Javascript
获取客户端电脑日期时间js代码(jquery)
Sep 12 Javascript
实例讲解JS中数组Array的操作方法
May 09 Javascript
JavaScript使用RegExp进行正则匹配的方法
Jul 11 Javascript
JS定义类的六种方式详解
May 12 Javascript
Jquery中map函数的用法
Jun 03 Javascript
Javascript获取图片原始宽度和高度的方法详解
Sep 20 Javascript
javascript 判断当前浏览器版本并判断ie版本
Feb 17 Javascript
Linux系统中利用node.js提取Word(doc/docx)及PDF文本的内容
Jun 17 Javascript
vue实现日历备忘录功能
Sep 24 Javascript
用jQuery实现抽奖程序
Apr 12 jQuery
《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
东芝TOSHIBA RP-F11电路分析
2021/03/02 无线电
php中取得文件的后缀名?
2012/02/20 PHP
PHP获取一年有几周以及每周开始日期和结束日期
2015/08/06 PHP
header与缓冲区之间的深层次分析
2016/07/30 PHP
laravel框架实现为 Blade 模板引擎添加新文件扩展名操作示例
2020/01/25 PHP
laravel邮件发送的实现代码示例
2020/01/31 PHP
JavaScript语法着色引擎(demo及打包文件下载)
2007/06/13 Javascript
理解JavaScript的caller,callee,call,apply
2009/04/28 Javascript
document.write的几点使用心得
2014/05/14 Javascript
让JavaScript的Alert弹出框失效的方法禁止弹出警告框
2014/09/03 Javascript
javascript设置连续两次点击按钮时间间隔的方法
2014/10/28 Javascript
Vue.js系列之项目结构说明(2)
2017/01/03 Javascript
fckeditor部署到weblogic出现xml无法读取及样式不能显示问题的解决方法
2017/03/24 Javascript
详解如何在vscode里面调试js和node.js的方法步骤
2018/12/24 Javascript
自定义Vue组件打包、发布到npm及使用教程
2019/05/22 Javascript
VUE前后端学习tab写法实例
2019/08/06 Javascript
layui点击左侧导航栏,实现不刷新整个页面,只刷新局部的方法
2019/09/25 Javascript
[01:01:24]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第三局
2016/02/25 DOTA
[04:31]2016国际邀请赛中国区预选赛妖精采访
2016/06/27 DOTA
[02:27]2018DOTA2亚洲邀请赛趣味视频之钓鱼大赛 谁是垂钓冠军?
2018/04/05 DOTA
python错误:AttributeError: 'module' object has no attribute 'setdefaultencoding'问题的解决方法
2014/08/22 Python
web.py 十分钟创建简易博客实现代码
2016/04/22 Python
听歌识曲--用python实现一个音乐检索器的功能
2016/11/15 Python
关于Python中浮点数精度处理的技巧总结
2017/08/10 Python
Python开发的十个小贴士和技巧及长常犯错误
2018/09/27 Python
75条笑死人的知乎神回复,用60行代码就爬完了
2019/05/06 Python
Tensorflow卷积实现原理+手写python代码实现卷积教程
2020/05/22 Python
OpenCV 使用imread()函数读取图片的六种正确姿势
2020/07/09 Python
Python调用REST API接口的几种方式汇总
2020/10/19 Python
HTML5 拖放功能实现代码
2016/07/14 HTML / CSS
完美解决IE8下不兼容rgba()的问题
2017/03/31 HTML / CSS
采购员岗位职责
2015/02/03 职场文书
2015年党总支工作总结
2015/05/25 职场文书
Linux、ubuntu系统下查看显卡型号、显卡信息详解
2022/04/07 Servers
Python开发五子棋小游戏
2022/04/28 Python
MySQL慢查询中的commit慢和binlog中慢事务的区别
2022/06/16 MySQL