《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 相关文章推荐
Javascript和Ajax中文乱码吐血版解决方案
Dec 21 Javascript
javascript 运算数的求值顺序
Aug 23 Javascript
jquery插件制作 手风琴Panel效果实现
Aug 17 Javascript
javascript实现校验文件上传控件实例
Apr 20 Javascript
使用JavaScript的AngularJS库编写hello world的方法
Jun 23 Javascript
javascript实现的闭包简单实例
Jul 17 Javascript
jQuery中队列queue()函数的实例教程
May 03 Javascript
vue2.0多条件搜索组件使用详解
Mar 26 Javascript
vue之数据交互实例代码
Jun 20 Javascript
利用vue和element-ui设置表格内容分页的实例
Mar 02 Javascript
Layui数据表格之单元格编辑方式
Oct 26 Javascript
Vue向后台传数组数据,springboot接收vue传的数组数据实例
Nov 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利用APC模块实现大文件上传进度条的方法
2015/10/29 PHP
PHP实现求两个字符串最长公共子串的方法示例
2017/11/17 PHP
PHP连接sftp并下载文件的方法教程
2018/08/26 PHP
javascript 模拟点击广告
2010/01/02 Javascript
使用Jquery获取带特殊符号的ID 标签的方法
2014/04/30 Javascript
Javascript模拟加速运动与减速运动代码分享
2014/12/11 Javascript
浅析jQuery事件之on()方法绑定多个选择器,多个事件
2016/04/27 Javascript
jQuery插件ajaxfileupload.js实现上传文件
2020/10/23 Javascript
jQuery 判断是否包含在数组中Array[]的方法
2016/08/03 Javascript
详解vue2.0脚手架的webpack 配置文件分析
2017/05/27 Javascript
ReactNative实现图片上传功能的示例代码
2017/07/11 Javascript
vue写一个组件
2018/04/09 Javascript
webpack4 CSS Tree Shaking的使用
2018/09/03 Javascript
利用es6 new.target来对模拟抽象类的方法
2019/05/10 Javascript
layer更改皮肤的实现方法
2019/09/11 Javascript
[00:47]DOTA2荣耀之路6:天火,天火!
2018/05/30 DOTA
python xlsxwriter创建excel图表的方法
2018/06/11 Python
Django框架使用富文本编辑器Uedit的方法分析
2018/07/31 Python
Stuart Weitzman欧盟:美国奢华鞋履品牌
2017/05/24 全球购物
LVMH旗下最大的奢侈品网站平台:24S
2020/05/24 全球购物
为什么group by 和order by会使查询变慢
2014/05/16 面试题
现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset
2012/11/09 面试题
国贸类专业毕业生的求职信分享
2013/12/08 职场文书
教育局长自荐信范文
2013/12/22 职场文书
30年同学聚会邀请函
2014/01/25 职场文书
幼儿园中班教师寄语
2014/04/03 职场文书
服务口号大全
2014/06/11 职场文书
公证委托书
2014/08/01 职场文书
大学生翘课检讨书范文
2014/10/06 职场文书
客户答谢会致辞
2015/01/20 职场文书
机动车交通事故协议书
2015/01/29 职场文书
奶茶店的创业计划书该怎么写?
2019/07/15 职场文书
三好学生竞选稿范文
2019/08/21 职场文书
导游词之清晏园
2019/11/22 职场文书
使用Navicat Premium工具将oracle数据库迁移到MySQL
2021/05/27 Oracle
详解Go与PHP的语法对比
2021/05/29 PHP