《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的智能提示插件一枚
Feb 18 Javascript
JQuyer $.post 与 $.ajax 访问WCF ajax service 时的问题需要注意的地方
Sep 20 Javascript
javascript上下方向键控制表格行选中并高亮显示的方法
Feb 13 Javascript
Jquery实现仿京东商城省市联动菜单
Nov 19 Javascript
AngularJS中的$watch(),$digest()和$apply()区分
Apr 04 Javascript
jQuery简单实现中间浮窗效果
Sep 04 Javascript
JS 组件系列之Bootstrap Table的冻结列功能彻底解决高度问题
Jun 30 Javascript
详解使用nvm安装node.js
Jul 18 Javascript
原生javascript实现文件异步上传的实例讲解
Oct 26 Javascript
vue实现密码显示隐藏切换功能
Feb 23 Javascript
微信小程序实现单选功能
Oct 30 Javascript
在react中使用vue的状态管理的方法示例
May 02 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安全性漫谈
2012/06/28 PHP
php调用新浪短链接API的方法
2014/11/08 PHP
Yii核心验证器api详解
2016/11/23 PHP
php获取当前月与上个月月初及月末时间戳的方法
2016/12/05 PHP
js判断浏览器是否支持html5
2014/08/17 Javascript
javascript解决IE6下hover问题的方法
2015/07/28 Javascript
jquery+html5时钟特效代码分享(可设置闹钟并且语音提醒)
2020/03/30 Javascript
javascript简单判断输入内容是否合法的方法
2016/05/11 Javascript
Angularjs 实现一个幻灯片示例代码
2016/09/08 Javascript
浅谈js停止事件冒泡 阻止浏览器的默认行为(阻止超连接 #)
2017/02/08 Javascript
javascript完美实现给定日期返回上月日期的方法
2017/06/15 Javascript
对于input 框限定输入值为浮点型的js代码
2017/09/25 Javascript
使用cropper.js裁剪头像的实例代码
2017/09/29 Javascript
如何去除富文本中的html标签及vue、react、微信小程序中的过滤器
2018/11/21 Javascript
Python使用PIL库实现验证码图片的方法
2016/03/11 Python
python学习教程之Numpy和Pandas的使用
2017/09/11 Python
使用Python和xlwt向Excel文件中写入中文的实例
2018/04/21 Python
python使用pygame框架实现推箱子游戏
2018/11/20 Python
Selenium chrome配置代理Python版的方法
2018/11/29 Python
django中media媒体路径设置的步骤
2019/11/15 Python
PyTorch实现AlexNet示例
2020/01/14 Python
Python OpenCV实现测量图片物体宽度
2020/05/27 Python
Python列表元素删除和remove()方法详解
2021/01/04 Python
前端canvas动画如何转成mp4视频的方法
2019/06/17 HTML / CSS
html5跨域通讯之postMessage的用法总结
2013/11/07 HTML / CSS
大学新生欢迎词
2014/01/10 职场文书
小学生新学期寄语
2014/01/19 职场文书
教师试用期自我鉴定
2014/02/12 职场文书
领导调研接待方案
2014/02/27 职场文书
幼儿园秋季开学寄语
2014/08/02 职场文书
关于运动会的广播稿50字
2014/10/17 职场文书
商务代表岗位职责
2015/02/15 职场文书
2015年幼师个人工作总结
2015/10/15 职场文书
优质服务心得体会(共4篇)
2016/01/22 职场文书
九年级英语教学反思
2016/02/15 职场文书
2016年百日安全生产活动总结
2016/04/06 职场文书