前端开发工程师 - 03.DOM编程艺术 - 第1章.基础篇(上)

第1章.基础篇(上)

DOM (Document Object Model) - 文档对象模型

以对象的方式来表示对应的html,它有一系列的规范

i.e.

在浏览器中,DOM是通过JS实现的。

DOM:

DOM Core:核心结构、API的定义

DOM HTML: 定义HTML如何转化成对象(HTML对应的对象)-- 操作节点

DOM Style:样式转换成对象 -- 操作样式

DOM Event:事件对象的模型 -- 响应用户的操作

文档树

HTML -> DOM树

节点遍历

node.parentNode

.firstChild

.lastChild

.previousSibling

.nextSibling

.firstElementChild

.lastElementChild

.nextElementSibling

.previousElementSibling

i.e.

p.parentNode是body

p.firstChild是hello,

p.firstElementChild是span

p.lastElementChild是img

p.lastChild是img

p.previousSibling没有,则返回null

p.nextSibling是div

节点类型:

ELEMENT_NODE:元素节点 (如上body, p, div, span, img)

TEXT_NODE:文本节点(如上hello,, 微专业, mooc)

COMMENT_NODE

DOCUMENT_TYPE_NODE

课堂交流:如何实现浏览器兼容版的element.child

element.children能够获取元素的元素子节点,但是低版本的ie不支持,如何在低版本的ie上兼容类似的功能。

http://www.jianshu.com/p/b7e111015c48

节点操作

Abstract: getElementById, getElementsByClassName, getElementsByTagName, querySelector(All), createElement, innerText, appendChild, insertBefore, removeChild, innerHTML

浏览器读取HTML渲染出页面结构以后,还可以通过JS改变页面的结构

获取节点:

通过节点关系可以获取节点(父子关系、兄弟关系)

缺点:可维护性差,如果一个节点的位置发生了变化,则关系也可能会被打乱

所以,一般使用接口来获取节点(获得的是节点对象:

getElementById:

element = document.getElementById(id):id在document中是唯一标识

getElementsByTagName:

collection = element.getElementsByTagName(tagName):通过元素来调用来获取元素内的节点

若tagName为"*", 则会获取指定元素element包含的所有的后代元素节点

注:collection是动态的集合

getElementsByClassName:

collection = element.getElementsByClassName(className)

通过空格分割,可以指定多个类名(无序),获取同时具有多个类名的元素

但是IE 6/7/8不兼容getElementsByClassName

function getElementsByClassName(element, classNames) {
    if (element.getElementsByClassName) {
        // 特性侦测,如果兼容则优先使用W3C规范的方式
        return element.getElementsByClassName(classNames);
    } else {
        var elements = element.getElementsByTagName("*"); // 所有后代元素
        var result = [];
        var element,
            classNameStr,
            flag;
        classNames = classNames.split(‘ ‘);
        for (var i = 0; element = elements[i]; i++) {
            classNameStr = ‘ ‘ + element.className + ‘ ‘;
            flag = true;
            for (var j = 0, className; className = classNames[j]; j++) {
                if (classNameStr.indexOf(‘ ‘ + className + ‘ ‘) == -1) {
                    flag = false;
                    break;
                }
            }
            if (flag) {
                result.push(element);
            }
        }
        return result;
    }
}

querySelector:

element = element.querySelector(selector)

返回第一个符合的元素

querySelectorAll:

list = element.querySelectorAll(selector)

i.e.

<div id="users">
    <h2>....</h2>
    <ul>
        <li class="user">Satoshi</li>
        <li class="user">春来草青</li>
        <li class="user last">Kash</li>
    </ul>
</div>

var users = document.querySelector(#users");  // 获取到元素div#users

users.querySelectorAll(".user");  // 获取到 [ li.user  li.user  li.user.last ]

document.querySelectorAll("#users .user");  // 获取到同上 [ li.user  li.user  li.user.last ]

创建节点

修改节点

插入节点

删除节点

innerHTML

属性操作

样式操作

事件

数据通信

数据存储

动画

音频与视频

canvas

BOM

表单操作

列表操作

时间: 2024-10-26 03:35:48

前端开发工程师 - 03.DOM编程艺术 - 第1章.基础篇(上)的相关文章

JavaScript Dom编程艺术 第6章的一个错误

今天在看JavaScript Dom编程艺术 第6章:图片库的改进版时:按照书上的代码,敲出来运行,确怎么也不能显示出正确的结果.加进去断点,调试,发现:prepareGallery 函数根本没被调用,而prepareGallery函数是绑定到window.onLoad事件上的,于是仔细检查书上代码,发现,window.onLoad = prepareGallery;后边少加了个括号.加上括号之后,结果正确.改正后的代码如下: 1 function addLoadEvent(func){ 2 v

JavaScript取消默认控件并添加新控件(DOM编程艺术第11章)

这一章实现的这个功能我研究了好久,这个思路我感觉已经是现在的我要膜拜的了,我感觉我的逻辑还是有些问题. 第一个问题:vid.height与vid.videoHeight vid.height = vid.videoHeight; vid.weight = vid.videoWidth;//移除边框-配合实现无边框效果 vid.parentNode.style.height = vid.videoHeight + "px"; //将vid的父元素(那个div)也贴合vid // vide

javascript DOM编程艺术 第10章问题记录

为什么moveElement函数调用时,必须加字符串的拼接符 var repeat = "moveElement('"+elementID+"',"+final_x+","+final_y+","+interval+")"; // var repeat = "moveElement('"elementID"',"final_x","final_y&

2019微专业初级前端开发工程师教程

目录:┣━━1前端入门┃ ┣━━第1章 前端技术发展概述┃ ┃ ┗━━1前端技术发展概述.mp4┃ ┣━━第2章 微专业课程体系概述┃ ┃ ┗━━2微专业课程体系概述.mp4┃ ┣━━第3章 前端入门案例┃ ┃ ┗━━3前端入门案例.mp4┃ ┣━━第4章 前端开发工具┃ ┃ ┣━━4.1前端开发工具概述.mp4┃ ┃ ┣━━4.2WebStorm.mp4┃ ┃ ┣━━4.2WebStorm参考资料.doc┃ ┃ ┣━━4.3Sublime Text 参考资料.doc┃ ┃ ┣━━4.3Subl

三个月从入门成为前端开发工程师系列视频教程

看到美观而设计感强的页面,怎样把它做出来?你的想法能不能变成别人眼前的现实?本课程以解决实际案例为导向,从切图开始,通过学习HTML标签与CSS设计,让你独立完成从效果图到网页的编码实现. 课程目录: 页面制作 单元(章) 课题(节) 内容 1.Photoshop切图 1.工具.面板.视图 介绍切图概念.PS软件.PS的面板+常用工具+辅助视图. 2.测量.取色 介绍并演示获取信息的方法:测量与取色 3.切图 切图及切图的各种操作:隐藏文字(独立图层和非独立图层的不同操作方法).png8和png

《DOM编程艺术》读书笔记&lt;概述&gt;

作为一名前端开发工程师,学习的过程中总少不了各种各样的书籍,作为新手如何在众多书籍中选到适合自己的呢,我们今天先来谈谈<DOM编程艺术>这本书. 其实呢大部分书都是好书,就像LOL中大部分英雄都很厉害,只有不强悍的召唤师.先了解一本书,然后认真的读下去你一定会有所收获的.在网上搜索书单时,你大概率会看到标题中这本书,但是又会看到褒贬不一的评论,那么这本书到底适不适合入门阅读呢,且听我慢慢道来. 读完这本书的第一感觉就是这本书里面好多内容已经过时了,比如里面大量的 js 对浏览器兼容性的检查,会

麦子学院-Web前端开发工程师系列培训教程

HTML+CSS基础入门1.课程介绍2.html的语法3.html的基本结构4.html的文档设置标记上(格式标记)5.html的文档设置标记下(文本标记)6.html图像标记img7.html超链接的使用8.html表格相关的标记9.html表格实战<简单的网页布局>10.html框架详解与框架布局实战11.HTML表单设计(上)12.HTML表单设计(下)13.使用CSS样式的方式14.定义CSS样式(CSS选择器)15.CSS常用属性(颜色属性)16.css常用属性(字体相关属性)17.

电子书 JavaScript DOM编程艺术.pdf

是Web开发中重要的一门语言,它强大而优美.无论是桌面开发,还是移动应用.都是必须掌握的技术.W3C的DOM标准是开发Web应用的基石.已经得到所有现代浏览器的支持,这使得跨平台Web开发成了一件轻松惬意的事.< DOM编程艺术(第2版)>是超级畅销书的升级版,由倡导Web标准的领军人物执笔,揭示了前端开发的真谛,是学习和DOM开发的推荐阅读之作. < DOM编程艺术(第2版)>在简洁明快地讲述和DOM的基本知识之后,通过几个实例演示了专业水准的网页开发技术,透彻阐述了平稳退化等一

前端开发工程师是个什么样的职位?

又是一年毕业时,考研工作各种忙! 而我也找到了我理想中的工作--前端开发工程师,其实刚开始找的时候我也不清楚这是一个什么样的工作,但是我知道一点就是大概也许和做网页有些许类似,毕竟是前端嘛,和网页还是有很大的关系的.然后我就在网上找相关知识去学习充实自己,临阵磨枪虽然不太好,但不失一个方法. 我找的公司是同程旅游公司,听起来感觉还不错(说实话在这之前我只知道携程,去哪儿旅游网等等,这个根本没听过Σ( ° △ °|||)︴),看看这个公司对这个职位的要求吧! 1.熟悉Web标准,Html/xhtm