《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 相关文章推荐
event.currentTarget与event.target的区别介绍
Dec 31 Javascript
获得Javascript对象属性个数的示例代码
Nov 21 Javascript
解决jquery插件:TypeError:$.browser is undefined报错的方法
Nov 21 Javascript
js实现将选中内容分享到新浪或腾讯微博
Dec 16 Javascript
jQuery.datatables.js插件用法及api实例详解
Oct 28 Javascript
jQuery Easyui datagrid行内实现【添加】、【编辑】、【上移】、【下移】
Dec 19 Javascript
微信小程序 本地数据读取实例
Apr 27 Javascript
react-redux中connect()方法详细解析
May 27 Javascript
详解ESLint在Vue中的使用小结
Oct 15 Javascript
在vue中使用express-mock搭建mock服务的方法
Nov 07 Javascript
Vue列表如何实现滚动到指定位置样式改变效果
May 09 Javascript
详解ES6新增字符串扩张方法includes()、startsWith()、endsWith()
May 12 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性能优化工具篇Benchmark类调试执行时间
2011/12/06 PHP
php 利用socket发送HTTP请求(GET,POST)
2015/08/24 PHP
Thinkphp5.0框架视图view的循环标签用法示例
2019/10/12 PHP
用Javascript评估用户输入密码的强度(Knockout版)
2011/11/30 Javascript
js 火狐下取本地路径实现思路
2013/04/02 Javascript
JS数组(Array)处理函数整理
2014/12/07 Javascript
jQuery实现滑动页面固定顶部显示(可根据显示位置消失与替换)
2015/10/28 Javascript
使用bootstrap typeahead插件实现输入框自动补全之问题及解决办法
2016/07/07 Javascript
通过jquery实现页面的动画效果(实例代码)
2016/09/18 Javascript
深入理解Angularjs中的$resource服务
2016/12/31 Javascript
vue  自定义组件实现通讯录功能
2018/09/30 Javascript
nuxt.js中间件实现拦截权限判断的方法
2018/11/21 Javascript
js实现盒子移动动画效果
2020/08/09 Javascript
在Python中使用itertools模块中的组合函数的教程
2015/04/13 Python
在Python中编写数据库模块的教程
2015/04/29 Python
python实现嵌套列表平铺的两种方法
2018/11/08 Python
PyCharm 设置SciView工具窗口的方法
2019/01/15 Python
python GUI库图形界面开发之PyQt5窗口背景与不规则窗口实例
2020/02/25 Python
浅析python 定时拆分备份 nginx 日志的方法
2020/04/27 Python
django的autoreload机制实现
2020/06/03 Python
keras中的History对象用法
2020/06/19 Python
Django配置Bootstrap, js实现过程详解
2020/10/13 Python
python3字符串输出常见面试题总结
2020/12/01 Python
h5调用摄像头的实现方法
2016/06/01 HTML / CSS
如何估计一张表的大小(假设该表中有1万条数据)
2016/03/27 面试题
运动会入场词200字
2014/02/15 职场文书
幼儿园毕业园长感言
2014/02/24 职场文书
学习党的群众路线教育实践活动心得体会
2014/03/01 职场文书
爱国卫生月活动总结范文
2014/04/25 职场文书
学校学雷锋活动总结
2014/06/26 职场文书
居委会四风问题个人对照检查材料
2014/09/25 职场文书
领导走群众路线整改措施思想汇报
2014/10/12 职场文书
施工单位工程部经理岗位职责
2015/04/09 职场文书
2015年社区妇联工作总结
2015/04/21 职场文书
检讨书范文大全
2015/05/07 职场文书
2016中秋节月饼促销广告语
2016/01/28 职场文书