《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 相关文章推荐
Maps Javascript
Jan 22 Javascript
Jquery 基础学习笔记
May 29 Javascript
Prototype 学习 工具函数学习($w,$F方法)
Jul 12 Javascript
学习ExtJS Column布局
Oct 08 Javascript
Js Jquery创建一个弹出层可加载一个页面
May 08 Javascript
jQuery自动添加表单项的方法
Jul 13 Javascript
JS获取元素多层嵌套思路详解
May 16 Javascript
vue使用jsonp抓取qq音乐数据的方法
Jun 21 Javascript
mongodb初始化并使用node.js实现mongodb操作封装方法
Apr 02 Javascript
Layui 动态禁止select下拉的例子
Sep 03 Javascript
js实现带箭头的进度流程
Mar 26 Javascript
Vue微信公众号网页分享的示例代码
May 28 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实例对象中的private属性详解
2017/10/12 PHP
PHP实现生成推广海报的方法详解
2018/03/14 PHP
laravel中短信发送验证码的实现方法
2018/04/25 PHP
JS JavaScript获取Url参数,src属性参数
2021/03/09 Javascript
range 标准化之获取
2011/08/28 Javascript
jQuery之选项卡的简单实现
2014/02/28 Javascript
jQuery基于ajax实现带动画效果无刷新柱状图投票代码
2015/08/10 Javascript
Javascript设计模式理论与编程实战之简单工厂模式
2015/11/03 Javascript
Angularjs的ng-repeat中去除重复数据的方法
2016/08/05 Javascript
JS遍历ul下的li点击弹出li的索引的实现方法
2016/09/19 Javascript
JS表单验证方法实例小结【电话、身份证号、Email、中文、特殊字符、身份证号等】
2017/02/14 Javascript
angularjs点击图片放大实现上传图片预览
2017/02/24 Javascript
用vue写一个仿简书的轮播图的示例代码
2018/03/13 Javascript
vue 中的keep-alive实例代码
2018/07/20 Javascript
工作中常用到的ES6语法
2018/09/04 Javascript
vuex + axios 做登录验证 并且保存登录状态的实例
2018/09/16 Javascript
javascript实现的时间格式加8小时功能示例
2019/06/13 Javascript
vue实现浏览器全屏展示功能
2019/11/27 Javascript
Python中optionParser模块的使用方法实例教程
2014/08/29 Python
用Python解析XML的几种常见方法的介绍
2015/04/09 Python
Python实现字符串逆序输出功能示例
2017/06/24 Python
python分析作业提交情况
2017/11/22 Python
浅谈Python实现贪心算法与活动安排问题
2017/12/19 Python
Python在groupby分组后提取指定位置记录方法
2018/04/20 Python
Flask框架信号用法实例分析
2018/07/24 Python
python 判断参数为Nonetype类型或空的实例
2018/10/30 Python
Python基本数据结构之字典类型dict用法分析
2019/06/08 Python
Python如何使用turtle库绘制图形
2020/02/26 Python
python Canny边缘检测算法的实现
2020/04/24 Python
新版Pycharm中Matplotlib不会弹出独立的显示窗口的问题
2020/06/02 Python
python 对一幅灰度图像进行直方图均衡化
2020/10/27 Python
使用css3 属性如何丰富图片样式(圆角 阴影 渐变)
2012/11/22 HTML / CSS
应聘护士求职信
2014/07/21 职场文书
幼儿园大班教师个人总结
2015/02/05 职场文书
2015年员工工作表现评语
2015/03/25 职场文书
基于nginx实现上游服务器动态自动上下线无需reload的实现方法
2021/03/31 Servers