Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit aac3436

Browse files
committed
docs(dom): edit node
1 parent 9690570 commit aac3436

File tree

5 files changed

+56
-51
lines changed

5 files changed

+56
-51
lines changed

_config.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ introduction: 导论
1717
grammar: 语法
1818
stdlib: 标准库
1919
oop: 面向对象编程
20-
dom: DOM
20+
dom: DOM模型
2121
bom: 浏览器环境
2222
htmlapi: HTML网页的API
2323
jquery: jQuery

dom/document.md

Lines changed: 22 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -446,11 +446,7 @@ focused = document.hasFocus();
446446

447447
注意,有焦点的文档必定被激活(active),反之不成立,激活的文档未必有焦点。比如如果用户点击按钮,从当前窗口跳出一个新窗口,该新窗口就是激活的,但是不拥有焦点。
448448

449-
### querySelector(),getElementById(),querySelectorAll(),getElementsByTagName(),getElementsByClassName(),getElementsByName(),elementFromPoint()
450-
451-
以下方法用来选中当前文档中的元素。
452-
453-
**(1)querySelector()**
449+
### querySelector()
454450

455451
`querySelector`方法返回匹配指定的CSS选择器的元素节点。如果有多个节点满足匹配条件,则返回第一个匹配的节点。如果没有发现匹配的节点,则返回`null`
456452

@@ -461,26 +457,26 @@ var el2 = document.querySelector('#myParent > [ng-click]');
461457

462458
`querySelector`方法无法选中CSS伪元素。
463459

464-
**(2)getElementById()**
460+
### getElementById()
465461

466-
`getElementById`方法返回匹配指定ID属性的元素节点。如果没有发现匹配的节点,则返回null
462+
`getElementById`方法返回匹配指定`id`属性的元素节点。如果没有发现匹配的节点,则返回`null`
467463

468464
```javascript
469-
var elem = document.getElementById("para1");
465+
var elem = document.getElementById('para1');
470466
```
471467

472-
注意,在搜索匹配节点时,`id`属性是大小写敏感的。比如,如果某个节点的`id`属性是`main`,那么`document.getElementById("Main")`将返回`null`,而不是指定节点。
468+
注意,在搜索匹配节点时,`id`属性是大小写敏感的。比如,如果某个节点的`id`属性是`main`,那么`document.getElementById('Main')`将返回`null`,而不是指定节点。
473469

474-
`getElementById`方法与`querySelector`方法都能获取元素节点,不同之处是`querySelector`方法的参数使用CSS选择器语法,`getElementById`方法的参数是HTML标签元素的id属性
470+
`getElementById`方法与`querySelector`方法都能获取元素节点,不同之处是`querySelector`方法的参数使用CSS选择器语法,`getElementById`方法的参数是HTML标签元素的`id`属性
475471

476472
```javascript
477473
document.getElementById('myElement')
478474
document.querySelector('#myElement')
479475
```
480476

481-
上面代码中,两个方法都能选中id为myElement的元素,但是getElementById()比querySelector()效率高得多。
477+
上面代码中,两个方法都能选中`id``myElement`的元素,但是`getElementById()``querySelector()`效率高得多。
482478

483-
**(3)querySelectorAll()**
479+
### querySelectorAll()
484480

485481
`querySelectorAll`方法返回匹配指定的CSS选择器的所有节点,返回的是NodeList类型的对象。NodeList对象不是动态集合,所以元素节点的变化无法实时反映在返回结果中。
486482

@@ -499,7 +495,6 @@ var matches = document.querySelectorAll('div.note, div.alert');
499495
querySelectorAll方法支持复杂的CSS选择器。
500496

501497
```javascript
502-
503498
// 选中data-foo-bar属性等于someval的元素
504499
document.querySelectorAll('[data-foo-bar="someval"]');
505500

@@ -511,16 +506,15 @@ document.querySelectorAll('DIV:not(.ignore)');
511506

512507
// 同时选中div,a,script三类元素
513508
document.querySelectorAll('DIV, A, SCRIPT');
514-
515509
```
516510

517511
如果`querySelectorAll`方法和`getElementsByTagName`方法的参数是字符串`*`,则会返回文档中的所有HTML元素节点。
518512

519513
与querySelector方法一样,querySelectorAll方法无法选中CSS伪元素。
520514

521-
**(4)getElementsByClassName()**
515+
### getElementsByClassName()
522516

523-
getElementsByClassName方法返回一个类似数组的对象(HTMLCollection类型的对象),包括了所有class名字符合指定条件的元素(搜索范围包括本身),元素的变化实时反映在返回结果中。这个方法不仅可以在document对象上调用,也可以在任何元素节点上调用。
517+
`document.getElementsByClassName`方法返回一个类似数组的对象(HTMLCollection类型的对象),包括了所有class名字符合指定条件的元素(搜索范围包括本身),元素的变化实时反映在返回结果中。这个方法不仅可以在document对象上调用,也可以在任何元素节点上调用。
524518

525519
```javascript
526520
// document对象上调用
@@ -537,39 +531,39 @@ document.getElementsByClassName('red test');
537531

538532
上面代码返回class同时具有red和test的元素。
539533

540-
**(5)getElementsByTagName()**
534+
### getElementsByTagName()
541535

542-
getElementsByTagName方法返回所有指定标签的元素(搜索范围包括本身)。返回值是一个HTMLCollection对象,也就是说,搜索结果是一个动态集合,任何元素的变化都会实时反映在返回的集合中。这个方法不仅可以在document对象上调用,也可以在任何元素节点上调用。
536+
`document.getElementsByTagName`方法返回所有指定标签的元素(搜索范围包括本身)。返回值是一个`HTMLCollection`对象,也就是说,搜索结果是一个动态集合,任何元素的变化都会实时反映在返回的集合中。这个方法不仅可以在`document`对象上调用,也可以在任何元素节点上调用。
543537

544538
```javascript
545-
var paras = document.getElementsByTagName("p");
539+
var paras = document.getElementsByTagName('p');
546540
```
547541

548-
上面代码返回当前文档的所有p元素节点
542+
上面代码返回当前文档的所有`p`元素节点
549543

550-
注意,getElementsByTagName方法会将参数转为小写后,再进行搜索。
544+
注意,`getElementsByTagName`方法会将参数转为小写后,再进行搜索。
551545

552-
**(6)getElementsByName()**
546+
### getElementsByName()
553547

554-
getElementsByName方法用于选择拥有name属性的HTML元素,比如form、imgframe、embed和object,返回一个NodeList格式的对象,不会实时反映元素的变化
548+
`document.getElementsByName`方法用于选择拥有`name`属性的HTML元素(比如`<form>``<img>``<frame>``<embed>``<object>`等),返回一个类似数组的的对象(`NodeList`对象的实例)
555549

556550
```javascript
557551
// 表单为 <form name="x"></form>
558-
var forms = document.getElementsByName("x");
552+
var forms = document.getElementsByName('x');
559553
forms[0].tagName // "FORM"
560554
```
561555

562-
注意,在IE浏览器使用这个方法,会将没有name属性、但有同名id属性的元素也返回,所以name和id属性最好设为不一样的值
556+
注意,`getElementsByName`返回的结果不会实时反映网页元素的变化
563557

564-
**(7)elementFromPoint()**
558+
### elementFromPoint()
565559

566-
elementFromPoint方法返回位于页面指定位置的元素
560+
`document.elementFromPoint`方法返回位于页面指定位置的元素
567561

568562
```javascript
569563
var element = document.elementFromPoint(x, y);
570564
```
571565

572-
上面代码中,elementFromPoint方法的参数x和y,分别是相对于当前窗口左上角的横坐标和纵坐标,单位是CSS像素。elementFromPoint方法返回位于这个位置的DOM元素,如果该元素不可返回(比如文本框的滚动条),则返回它的父元素(比如文本框)。如果坐标值无意义(比如负值),则返回null
566+
上面代码中,`elementFromPoint`方法的参数`x``y`,分别是相对于当前窗口左上角的横坐标和纵坐标,单位是像素。`elementFromPoint`方法返回位于这个位置的DOM元素,如果该元素不可返回(比如文本框的滚动条),则返回它的父元素(比如文本框)。如果坐标值无意义(比如负值),则返回`null`
573567

574568
### createElement(),createTextNode(),createAttribute(),createDocumentFragment()
575569

dom/node.md

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,38 @@
11
---
2-
title: Node节点
2+
title: DOM 模型概述
33
layout: page
44
category: dom
55
date: 2013-10-07
66
modifiedOn: 2014-05-18
77
---
88

9-
## DOM的概念
9+
## 基本概念
1010

11-
DOM是文档对象模型(Document Object Model)的简称,它的基本思想是把结构化文档(比如HTML和XML)解析成一系列的节点,再由这些节点组成一个树状结构(DOM Tree)。所有的节点和最终的树状结构,都有规范的对外接口,以达到使用编程语言操作文档的目的(比如增删内容)。所以,DOM可以理解成文档(HTML文档、XML文档和SVG文档)的编程接口。
11+
### DOM
1212

13-
DOM有自己的国际标准,目前的通用版本是[DOM 3](http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core.html),下一代版本[DOM 4](http://www.w3.org/TR/dom/)正在拟定中。本章介绍的就是JavaScript对DOM标准的实现和用法
13+
DOM是JavaScript操作网页的接口,全称为“文档对象模型”(Document Object Model)。它的作用是将网页转为一个JavaScript对象,从而可以用脚本进行各种操作(比如增删内容)
1414

15-
严格地说,DOM不属于JavaScript,但是操作DOM是JavaScript最常见的任务,而JavaScript也是最常用于DOM操作的语言。所以,DOM往往放在JavaScript里面介绍
15+
浏览器会根据DOM模型,将结构化文档(比如HTML和XML)解析成一系列的节点,再由这些节点组成一个树状结构(DOM Tree)。所有的节点和最终的树状结构,都有规范的对外接口。所以,DOM可以理解成网页的编程接口。DOM有自己的国际标准,目前的通用版本是[DOM 3](http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core.html),下一代版本[DOM 4](http://www.w3.org/TR/dom/)正在拟定中
1616

17-
## 节点的概念
17+
严格地说,DOM不属于JavaScript,但是操作DOM是JavaScript最常见的任务,而JavaScript也是最常用于DOM操作的语言。本章介绍的就是JavaScript对DOM标准的实现和用法。
1818

19-
DOM的最小组成单位叫做节点(node),一个文档的树形结构(DOM树),就是由各种不同类型的节点组成。
19+
### 节点
2020

21-
对于HTML文档,节点主要有以下六种类型:Document节点、DocumentType节点、Element节点、Attribute节点、Text节点和DocumentFragment节点
21+
DOM的最小组成单位叫做节点(node)。文档的树形结构(DOM树),就是由各种不同类型的节点组成。每个节点可以看作是文档树的一片叶子
2222

23-
节点|名称|含义
24-
----|----|----
25-
Document | 文档节点 | 整个文档(window.document)
26-
DocumentType | 文档类型节点 | 文档的类型(比如&lt;!DOCTYPE html&gt;
27-
Element | 元素节点 | HTML元素(比如&lt;body&gt;&lt;a&gt;等)
28-
Attribute | 属性节点| HTML元素的属性(比如class="right")
29-
Text | 文本节点 | HTML文档中出现的文本
30-
DocumentFragment | 文档碎片节点 | 文档的片段
23+
节点的类型有七种。
3124

32-
浏览器原生提供一个Node对象,上表所有类型的节点都是Node对象派生出来的。也就是说,它们都继承了Node的属性和方法。
25+
- `Document`:整个文档树的顶层节点
26+
- `DocumentType``doctype`标签(比如`<!DOCTYPE html>`
27+
- `Element`:网页的各种HTML标签(比如`<body>``<a>`等)
28+
- `Attribute`:网页元素的属性(比如`class="right"`
29+
- `Text`:标签之间或标签包含的文本
30+
- `Comment`:注释
31+
- `DocumentFragment`:文档的片段
3332

34-
## Node节点的属性
33+
这七种节点都属于浏览器原生提供的节点对象的派生对象,具有一些共同的属性和方法。
34+
35+
## 节点对象的属性
3536

3637
### nodeName,nodeType
3738

@@ -246,7 +247,7 @@ baseURI属性返回一个字符串,由当前网页的协议、域名和所在
246247

247248
该属性不仅document对象有(`document.baseURI`),元素节点也有(`element.baseURI`)。通常情况下,它们的值是相同的。
248249

249-
## Node节点的方法
250+
## 节点对象的方法
250251

251252
### appendChild(),hasChildNodes()
252253

htmlapi/elements.md

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ console.log(example) // 1
4545

4646
由于历史原因,以下HTML元素的`name`属性,也会成为全局变量。
4747

48-
- `<a>`
4948
- `<applet>`
5049
- `<area>`
5150
- `<embed>`
@@ -78,6 +77,17 @@ myForm[1] // [object HTMLFormElement]
7877

7978
上面代码中,全局变量`myForm`的第一个成员指向`div`元素,第二个成员指向`form`元素。
8079

80+
这些元素的`name`属性名,也会成为`document`对象的属性。
81+
82+
```javascript
83+
// HTML代码为<img name="xx" />
84+
document.xx === xx // true
85+
```
86+
87+
上面代码中,`name`属性为`xx``img`元素,自动生成了全局变量`xx``document`对象的属性`xx`
88+
89+
如果有多个`name`属性相同的元素,那么`document`对象的该属性指向一个类似数组的对象(NodeList对象的实例)。
90+
8191
另外,如果`iframe`元素有`name`属性或`id`属性,那么生成的全局变量,不是指向`iframe`元素节点,而是指向这个`iframe`代表的子页面`window`对象。
8292

8393
## image元素

index.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,9 @@ modifiedOn: 2014-05-18
5353
- [Promise](advanced/promise.html)
5454
- [严格模式](advanced/strict.html)
5555

56-
<h2 id="dom">DOM</h2>
56+
<h2 id="dom">DOM模型</h2>
5757

58-
- [Node节点](dom/node.html)
58+
- [概述](dom/node.html)
5959
- [Document节点](dom/document.html)
6060
- [Element节点](dom/element.html)
6161
- [Text节点和DocumentFragment节点](dom/text.html)

0 commit comments

Comments
 (0)