3232* document.querySelector()
3333* document.querySelectorAll()
3434
35- ** 使用快捷属性: ` document.forms ` **
35+ ** 使用快捷属性:document.forms**
3636
3737` document.forms ` 属性在 DOM0 级之前便已存在,它可以获取文档中所有的表单元素,返回值是一个 ` HTMLCollection ` 类型的集合对象。
3838
@@ -49,9 +49,11 @@ document.forms["myname"]; //根据name属性的值获取指定的表单元素。
4949触发提交表单的方式有三种:
5050
5151** 键盘按键行为**
52+
5253当表单中任意一个表单控件(字段)元素获得焦点时( ` <textarea> ` 元素除外),敲击键盘上的回车键(enter)便可以触发表单提交。
5354
5455** 点击提交按钮**
56+
5557在表单元素中 ` <button> ` 标记或者指定 ` type="submit" ` 的按钮都被认为是提交按钮。
5658
5759``` html
@@ -61,6 +63,7 @@ document.forms["myname"]; //根据name属性的值获取指定的表单元素。
6163```
6264
6365** 表单提交方法**
66+
6467使用 JS 来调用表单元素对象的 ` submit() ` 方法来提交表单。
6568
6669``` js
@@ -90,6 +93,7 @@ document.forms[0].submit();
9093```
9194
9295** 表单的重置方法**
96+
9397JS 调用表单元素对象的 ` reset() ` 方法便可以触发表单重置
9498
9599这两种方式的区别在于最后一种不会触发表单的 ` onreset ` 事件,通常我们可以调用其事件对象的 ` preventDefault() ` 方法来决定是否阻止表单的重置操作。
@@ -118,14 +122,15 @@ firstField == colorFields[0]; //true
118122```
119123
120124** 表单字段共有的属性**
125+
121126除了 ` fieldSet ` 元素之外,所有表单字段元素都具有以下属性:
122127
123128* name : 表单字段元素名称。
124129* value : 表单字段元素的值。
125130* disable : 布尔值,禁用该表单字段。
126131* readyonly: 布尔值,表示当前字段元素是否只读。
127132* type : 表单字段元素的类型。
128- * tabIndex : 表单字段tab键切换的顺序
133+ * tabIndex : 表单字段 tab 键切换的顺序
129134* form : 读取或设置该表单字段元素所属的表单对象,常用于表单之外的表单字段元素。
130135* autofocus : 页面加载时是否获得焦点。
131136
@@ -146,7 +151,7 @@ if (input.autoFocus !== true) {
146151}
147152```
148153
149- 在早期的WEB技术中我们会利用 ` blur() ` 方法失去焦点的特性来模拟 ` readyonly ` 属性的效果:
154+ 在早期的 WEB 技术中我们会利用 ` blur() ` 方法失去焦点的特性来模拟 ` readyonly ` 属性的效果:
150155
151156``` JS
152157// JavaScript
@@ -155,7 +160,7 @@ document.forms[0].elements[0].blur();
155160
156161** 表单字段共有的事件**
157162
158- 除了支持键盘,鼠标和HTML事件之外,所有的表单元素都支持以下3个事件 :
163+ 除了支持键盘,鼠标和 HTML 事件之外,所有的表单元素都支持以下 3 个事件 :
159164
160165* blur: 当字段元素失去焦点时触发。
161166* change : 对于 ` <input/> ` 与 ` <textarea> ` 等标记而言会在其失去焦点且 ` value ` 属性的值发生改变时触发,而对 ` <select> ` 而言当选项发生改变时就会触发。
@@ -164,6 +169,7 @@ document.forms[0].elements[0].blur();
164169调用表单字段元素的 ` focus() ` 或 ` blur() ` 方法会触发对应的 ` onfocus ` 与 ` onblur ` 事件,这一点与调用表单的提交/重置方法有很大区别。
165170
166171** 总体概览**
172+
167173![ ] ( ./images/表单字段元素.png )
168174
169175## 文本框脚本
@@ -193,9 +199,11 @@ document.forms[0].elements[0].blur();
193199### 选择方法与事件
194200
195201** select()**
202+
196203调用文本框的 ` select() ` 方法可以全选文本框中的内容。
197204
198205** select**
206+
199207使用鼠标或调用 ` select() ` 方法选择文本框中的内容都可以触发文本框的选择事件。
200208
201209### 取得选择的内容
@@ -215,11 +223,11 @@ function getSelectedText(textbox) {
215223}
216224```
217225
218- > 实际上也可以通过标准DOM选取对象来获取选择的内容 ` document.getSelection().toString() `
226+ > 实际上也可以通过标准 DOM 选取对象来获取选择的内容 ` document.getSelection().toString() `
219227
220228### 选择部分内容
221229
222- 使用JS主动选择文本框中的部分内容需要借助于HTML5为文本框新增的 ` setSelectionRange(start,?end) ` 方法,它接收两个参数,分别是选区范围的起始于结束位置。
230+ 使用 JS 主动选择文本框中的部分内容需要借助于 HTML5 为文本框新增的 ` setSelectionRange(start,?end) ` 方法,它接收两个参数,分别是选区范围的起始于结束位置。
223231使用形式上与 ` substring() ` 完全相同。
224232
225233``` JS
@@ -230,7 +238,7 @@ textbox.focus();
230238
231239> 要想看到选择效果,必须要在调用 ` setSelectionRange() ` 方法之前或之后为文本框获得焦点。
232240
233- IE8及以下版本可以使用IE为文本框提供的私有方法 ` createTextRange() ` 方法,来基于文本框创建一个文本范围对象。
241+ IE8 及以下版本可以使用 IE 为文本框提供的私有方法 ` createTextRange() ` 方法,来基于文本框创建一个文本范围对象。
234242
235243``` JS
236244// JavaScript
@@ -269,16 +277,16 @@ if (!/\d+/.test(String.fromCharCode(keyCode)) && !event.ctrlKey) {
269277目前各浏览器支持较为完善的剪贴板事件有以下三个:
270278
271279* ** copy** : 在发生复制时触发,包括键盘快捷键(ctrl+c)、右键菜单、执行 ` document.execCommand('copy') ` 命令。
272- * ** cut** : 在发生剪切时触发,包括键盘快捷键(ctrl+x)、右键菜单、执行 ` document.execCommand('cut') ` 命令。
280+ * ** cut** : 在发生剪切时触发,包括键盘快捷键(ctrl+x)、右键菜单、执行 ` document.execCommand('cut') ` 命令。
273281* ** paste** : 在发生粘贴时触发,包括键盘快捷键(ctrl+v)、右键菜单。
274282
275- 为了防止对剪贴板的未授权访问,只有在剪贴板事件期间其事件对象(event)的 ` clipboardData ` 对象才有效,而在IE中 , ` clipboardData ` 对象是作为 window 对象的全局属性,它可以随时被访问到,因此一直有效。
283+ 为了防止对剪贴板的未授权访问,只有在剪贴板事件期间其事件对象(event)的 ` clipboardData ` 对象才有效,而在 IE 中 , ` clipboardData ` 对象是作为 window 对象的全局属性,它可以随时被访问到,因此一直有效。
276284
277285` clipboardData ` 对象提供了三个常用的方法,用以访问与操作剪贴板内容,但需要注意的是这些方法在不同时期的事件中时有一定差异与限制的。
278286
279287** getData(format)**
280288
281- 从剪贴板中取得数据,其中 ` format ` 参数是要取得数据的格式。在 IE 中只有 ` text ` 和 ` URL ` 两种格式,而在现代浏览器中既可以兼容 ` text ` 类型也可以是具体的 MIME 类型,例如 ` text/plain ` 。
289+ 从剪贴板中取得数据,其中 ` format ` 参数是要取得数据的格式。在 IE 中只有 ` text ` 和 ` URL ` 两种格式,而在现代浏览器中既可以兼容 ` text ` 类型也可以是具体的 MIME 类型,例如 ` text/plain ` 。
282290
283291> 注意:无法在 ` copy ` 或者 ` cut ` 事件中单独使用该方法,但可以结合 ` setData() ` 一起使用。
284292
@@ -293,7 +301,7 @@ input.addEventListener('copy', function(event) {
293301
294302** setData(format, value)**
295303
296- 设置剪贴板中的数据,相同的 ` format ` 参数在IE中只支持 ` text ` 与 ` URL ` 。而现代浏览器中只支持 MIME 类型并不能像 ` getData() ` 方法那样还可以识别 ` text ` 类型。
304+ 设置剪贴板中的数据,相同的 ` format ` 参数在 IE 中只支持 ` text ` 与 ` URL ` 。而现代浏览器中只支持 MIME 类型并不能像 ` getData() ` 方法那样还可以识别 ` text ` 类型。
297305
298306> 注意: 该方法只能在 ` copy ` 与 ` cut ` 事件中使用,无法使用于 ` paste ` 事件。
299307
@@ -322,11 +330,11 @@ if (!/\d+/.test(event.clipboardData.getData("text"))) {
322330}
323331```
324332
325- ### HTML5中的文本框
333+ ### HTML5 中的文本框
326334
327335#### 更多的输入类型
328336
329- HTML5为 ` <input> ` 的 ` type ` 属性新增了以下属性:
337+ HTML5 为 ` <input> ` 的 ` type ` 属性新增了以下属性:
330338
331339* 数值类型:number | range
332340* 日期时间类型:date | time | week | month | local-datetime
@@ -338,11 +346,11 @@ HTML5为 `<input>` 的 `type` 属性新增了以下属性:
338346其中为数值类型扩展增加了以下属性与方法:
339347
340348* 数值类型:number | range
341- - min : 范围最小值。
342- - max : 范围最大值。
343- - step : 改变的步长值。
344- - stepUp() : 在当前值的基础上增加指定的值,默认每次调用加1 。
345- - stepDown() : 在当前值的基础上减去指定的值,默认每次调用减1 。
349+ + min : 范围最小值。
350+ + max : 范围最大值。
351+ + step : 改变的步长值。
352+ + stepUp() : 在当前值的基础上增加指定的值,默认每次调用加 1 。
353+ + stepDown() : 在当前值的基础上减去指定的值,默认每次调用减 1 。
346354
347355``` HTML
348356<!-- HTML -->
@@ -361,7 +369,7 @@ button.onclick = function() {
361369};
362370```
363371
364- #### 约束验证API
372+ #### 约束验证 API
365373
3663741 . 必填项
367375
@@ -390,7 +398,7 @@ if ('pattern' in document.createElement('input')) {
390398
3913993 . 检测有效性
392400
393- 使用 ` checkValidity() ` 方法可以检测表单元素或表单字段元素的有效性,返回值为布尔值, ` true ` 表示验证通过, ` false ` 表示无效。
401+ 使用 ` checkValidity() ` 方法可以检测表单元素或表单字段元素的有效性,返回值为布尔值, ` true ` 表示验证通过, ` false ` 表示无效。
394402
395403``` JS
396404// JavaScript
@@ -457,51 +465,64 @@ console.log(document.forms[0].novalidate);
457465` select ` 元素是 ` HTMLSelectElement ` 类型的实例,除了拥有所有表单字段元素共有的属性和方法外,它还提供了以下独有的属性与方法:
458466
459467** options**
468+
460469保存了该 ` select ` 元素内的所有 ` option ` 元素的集合,返回值是一个 ` HTMLCollection `
461470类型的动态集合对象。
462471
463- ** multiple**
472+ ** multiple**
473+
464474布尔值,是否允许多选,它的取值会影响 ` type ` 属性的值,如果为“真”时 ` type ` 属性的值为 ` select-multiple ` ,如果为“假”时则为 ` select-one ` 。
465475
466- ** size** s
476+ ** size**
477+
467478选择框的行高(行数),类似于 ` <textarea> ` 元素的 ` rows ` 属性。
468479
469- ** selectedIndex**
470- 可读可写,读取时返回选择中已选择项的位置索引,当返回值为-1是则表示没有选中项;写入时,传入指定选项的位置索引便可以在选择框中将其置为选中状态。
480+ ** selectedIndex**
481+
482+ 可读可写,读取时返回选择中已选择项的位置索引,当返回值为-1 是则表示没有选中项;写入时,传入指定选项的位置索引便可以在选择框中将其置为选中状态。
483+
484+ ** value**
471485
472- ** value**
473486该属性是表单字段元素共有的属性,但在选择框中其取值较为特殊,遵循以下规则:
474487
4754881 . 如果选择框没有选中项,那么 ` value ` 属性的取值为“空字符串”。
4764892 . 如果选择框有一个或多个选中项,那么选择框的 ` value ` 属性值则是所有选中项中的第一个选中项(option)的 ` value ` 属性的值,哪怕是这个选中项的 ` value ` 属性值为空字符串。
4774903 . 如果选中项的 ` value ` 属性未定义(undefined)或不存在(null),则取该选中项(option)的 ` text ` 属性的值。
478491
479492** add(newOption, relOption?)**
493+
480494向选择框中加入一个新选项(newOption),并将其插入到指定选项(relOption)之前。
481495
482496** remove(optionIndex)**
497+
483498移除选择框中指定位置索引的选项。
484499
485500在 DOM 中选择框内的每个选项 —— ` option ` 元素,都是 ` HTMLOptionElement ` 类型的实例,为便于访问数据 ` HTMLOptionElement ` 类型的原型对象上添加了以下的属性:
486501
487502** index**
503+
488504该选项在选择框中的位置索引,返回值为数值型。
489505
490506** text**
507+
491508选项的文本。
492509
493510** value**
511+
494512选项的值。(也是所有表单字段元素共有的属性值)
495513
496514** selected**
515+
497516布尔值,该选项是否被选中。
498517
499518一个或多个 ` <option> ` 选项可以放在 ` <optgroup> ` 中作为一个整体的“选项组”。它是 ` HTMLOptGroupElement ` 类型的实例,为了便于对选项组的整体进行操作, ` HTMLOptGroupElement ` 类型提供了以下属性:
500519
501520** disabled**
521+
502522布尔值,禁用整个选项组。
503523
504524** label**
525+
505526读取或设置选项组的标签名称。
506527
507528``` JS
@@ -569,7 +590,7 @@ function getSelectedOption(select) {
569590
570591### 添加选项
571592
572- 创建选项(option)对象的方式有两种,使用标准DOM技术提供的 ` document.createElement(tagName) ` 方法,以及使用DOM0级便已经存在的 ` Option() ` 构造函数。
593+ 创建选项(option)对象的方式有两种,使用标准 DOM 技术提供的 ` document.createElement(tagName) ` 方法,以及使用 DOM0 级便已经存在的 ` Option() ` 构造函数。
573594
574595` Option(text,value) ` 构造函数接受两个参数,分别是选项实例的“文本(text)”与“值(value)”。
575596
@@ -579,7 +600,7 @@ document.createElement('option');
579600new Option (" red" , " rgb(255,0,0)" );
580601```
581602
582- 向选择框中添加选项的方式也有两种,标准DOM技术提供的 ` appendChlid() ` 方法,以及 ` select ` 元素对象自身的 ` add(newOption,relOption) ` 方法。
603+ 向选择框中添加选项的方式也有两种,标准 DOM 技术提供的 ` appendChlid() ` 方法,以及 ` select ` 元素对象自身的 ` add(newOption,relOption) ` 方法。
583604
584605``` JS
585606// JavaScript
@@ -589,7 +610,7 @@ select.add(option3, option2); //在option2选项之前新增一个option3选项
589610```
590611
591612下面是它们的具体实现:
592- 标准DOM技术
613+ 标准 DOM 技术
593614
594615``` JS
595616// JavaScript
@@ -614,7 +635,7 @@ select.add(option, undefined);
614635
615636### 移动选项
616637
617- 利用DOM元素在文档中的唯一性 (对文档中已存在的元素进行移动,会先从该元素的父节点中移除它,然后再添加到指定的位置)。我们可以使用标准DOM技术提供的 ` insertBefore(newNode,Node) ` 方法进行移动。或者使用私有的 ` add() ` 方法添加指定选项之前。
638+ 利用 DOM 元素在文档中的唯一性 (对文档中已存在的元素进行移动,会先从该元素的父节点中移除它,然后再添加到指定的位置)。我们可以使用标准 DOM 技术提供的 ` insertBefore(newNode,Node) ` 方法进行移动。或者使用私有的 ` add() ` 方法添加指定选项之前。
618639
619640``` JS
620641// JavaScript
@@ -656,7 +677,7 @@ select.remove(); //参数为空,表示删除整个 select 元素节点。
656677>
657678> 3 . 选择框有多个选中项则每个选中项都是单独一个条目。
658679>
659- > 4 . ` <select> ` 元素的值是选中项 ` < option> ` 的 ` value ` 值,如果选中项没有 ` value ` 属性,则去该选项的文本值 ` text ` 。
680+ > 4 . ` <select> ` 元素的值是选中项( option) 的 ` value ` 值,如果选中项没有 ` value ` 属性,则取该选项的文本值( text) 。
660681>
661682> 5 . 单击提交按钮提交表单的情况下也会发送提交按钮,否则不发送,包括 ` type ` 为 ` image ` 的图片按钮。
662683
@@ -736,7 +757,7 @@ iframe.document.designMode = 'on';
736757
737758相比于 ` designMode ` 属性 ` contentEditable ` 属性可以作用在所有的 HTML 标签上,因此便无需结合内联框架(iframe) 就可以实现页面局部的富文本编辑功能。
738759
739- 设置标签元素的 ` contentEditable ` 属性既可以使用JS方式 ,也可以使用 HTML 标签属性的方式:
760+ 设置标签元素的 ` contentEditable ` 属性既可以使用 JS 方式 ,也可以使用 HTML 标签属性的方式:
740761
741762``` JS
742763// JavaScript
@@ -753,7 +774,8 @@ element.contentEditable = true;
753774与富文本编辑器的交互实际上就是对(富文本编辑器)选取内容的操作。
754775` document ` 对象提供了以下几个方法,用于便捷的对文档选区的内容进行操作:
755776
756- ** document.execCommand(cmdkey, false, cmdvalue)**
777+ ** document.execCommand(cmdkey, false, cmdvalue)**
778+
757779对文档选区执行一些列命令操作。
758780该方法可操作的命令列表,可查看该链接:[ MDN - document.execCommand] ( https://developer.mozilla.org/zh-CN/docs/Web/API/Document/execCommand )
759781
@@ -762,9 +784,11 @@ element.contentEditable = true;
762784检查指定的命令是否可用,注意该方法会对 ` paste ` 命令也返回 ` true ` ,但实际上并不可用。
763785
764786** document.queryCommandState(cmdkey)**
787+
765788检查传入的命令是否已经应用于该选区内容上。
766789
767790** document.queryCommandValue(cmdkey)**
791+
768792从选区内容中返回上次执行命令所传入的值。
769793
770794若想对选区内容做到更加细化的控制,则需要使用“选区对象”。
@@ -793,10 +817,10 @@ oSpan.appendChild(document.createTextNode(selectionText));
793817range .surroundContents (oSpan);
794818```
795819
796- 对于IE低版本则可以使用IE专有的选区对象以及基于选区创建范围方式来兼容实现 。
820+ 对于 IE 低版本则可以使用 IE 专有的选区对象以及基于选区创建范围方式来兼容实现 。
797821
798822``` js
799- document .selection .createRange ();
823+ document .selection .createRange ();
800824// 基于当前的选区创建一个范围,如果想对选区内容更细化的操作,只需要操作这个范围对象即可。
801825```
802826
0 commit comments