《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 相关文章推荐
jQuery 遍历- 关于closest() 的方法介绍以及与parents()的方法区别分析
Apr 26 Javascript
一个js控制的导航菜单实例代码
Dec 03 Javascript
Jquery创建层显示标题和内容且随鼠标移动而移动
Jan 26 Javascript
推荐10 个很棒的 jQuery 特效代码
Oct 04 Javascript
详解js跨域原理以及2种解决方案
Dec 09 Javascript
jquery中取消和绑定hover事件的实现代码
Jun 02 Javascript
预防网页挂马的方法总结
Nov 03 Javascript
bootstrap table服务端实现分页效果
Aug 10 Javascript
微信小程序实现滚动消息通知
Feb 02 Javascript
node使用mysql获取数据库数据中文乱码问题的解决
Dec 02 Javascript
jquery+css3实现的经典弹出层效果示例
May 16 jQuery
layui使用及简单的三级联动实现教程
Dec 01 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之对抗Web扫描器的脚本技巧
2008/10/01 PHP
thinkPHP3.1验证码的简单实现方法
2016/04/22 PHP
浅谈PHP eval()函数定义和用法
2016/06/21 PHP
laravel5.2实现区分前后台用户登录的方法
2017/01/11 PHP
PHP使用file_get_contents发送http请求功能简单示例
2018/04/29 PHP
基于jQuery的Tab选项框效果代码(插件)
2011/03/01 Javascript
jQuery 名称冲突的解决方法
2011/04/08 Javascript
js确定对象类型方法
2012/03/30 Javascript
基于jQuery实现左右div自适应高度完全相同的代码
2012/08/09 Javascript
jquery使用jxl插件导出excel示例
2014/04/14 Javascript
详谈LABJS按需动态加载js文件
2015/05/07 Javascript
JavaScript包装对象使用详解
2015/07/09 Javascript
jquery简单倒计时实现方法
2015/12/18 Javascript
JavaScript的Backbone.js框架环境搭建及Hellow world示例
2016/05/07 Javascript
深入理解requestAnimationFrame的动画循环
2016/09/20 Javascript
javascript使用递归算法求两个数字组合功能示例
2017/01/03 Javascript
JavaScript简单生成 N~M 之间随机数的方法
2017/01/13 Javascript
关于angular js_$watch监控属性和对象详解
2017/04/24 Javascript
vue.js开发环境搭建教程
2017/05/04 Javascript
react native带索引的城市列表组件的实例代码
2017/08/08 Javascript
jQuery实现锚点向下平滑滚动特效示例
2017/08/29 jQuery
使用JavaScript实现在页面中显示距离2017年中秋节的天数
2017/09/26 Javascript
使用JS获取页面上的所有标签
2018/10/18 Javascript
使用VUE+iView+.Net Core上传图片的方法示例
2019/01/04 Javascript
vue使用canvas实现移动端手写签名
2020/09/22 Javascript
Python+Opencv身份证号码区域提取及识别实现
2020/08/25 Python
英国建筑用品在线:Building Supplies Online(BSO)
2018/04/30 全球购物
Famous Footwear加拿大:美国多品牌运动休闲鞋店
2018/12/05 全球购物
大学开学计划书
2014/04/30 职场文书
市场营销专业毕业生求职信
2014/07/21 职场文书
党员创先争优心得体会
2014/09/11 职场文书
欢送会主持词
2015/07/01 职场文书
2015秋季开学典礼新闻稿
2015/07/17 职场文书
售房协议书范本
2015/08/11 职场文书
JavaScript组合继承详解
2021/11/07 Javascript
ubuntu端向日葵键盘输入卡顿问题及解决
2022/12/24 Servers