《 JavaScript高级程序设计》第六章 DOM基础

截取自读书频道:

http://book.csdn.net/bookfiles/110/index.htm

6.1  什么是DOM

在开始详细介绍什么是DOM之前,你首先要了解是什么促使了它的诞生。尽管DOM很大程度上受到浏览器中动态HTML发展的影响,但W3C还是将它最先应用于XML

6.1.1  XML简介

XML可扩展标记语言)是从称为SGML标准通用标记语言)的更加古老的语言派生出来的。SGML的主要目的是定义使用标签来表示数据的标记语言的语法。

XML去掉了之前令许多开发人员头疼的SGML的随意语法。

1  任何的起始标签都必须有一个结束标签。

2  可以采用另一种简化语法,可以在一个标签中同时表示起始和结束标签。这种语法是在大于符号之前紧跟一个斜线(/),例如XML解析器会将其翻译成

3  标签必须按合适的顺序进行嵌套,所以结束标签必须按镜像顺序匹配起始标签,例如 this is a sample string

4  所有的特性都必须有值。

5  所有的特性都必须在值的周围加上双引号。

xml的主要目的是使用文本以结构化的方式来表示数据。在某些方面,XML文件也类似于数据库,提供数据的结构化视图。

每个XML文档都由XML序言开始,在前面的代码中的第一行便是XML序言

第二行代码,,则是文档元素document element),它是文件中最外面的标签(我们认为元素(element)是起始标签和结束标签之间的内容)。

然后其中的具体内容就可能包括注释,处理指令,代码.

6.1.2  针对XMLAPI

XML定义为一种语言之后,就出现了使用常见的编程语言(如Java)来同时表现和处理XML代码的需求。

首先出现的是Java上的SAXSimple API for XML)项目。SAX提供了一个基于事件的XML解析的API。从其本质上来说,SAX解析器从文件的开头出发,从前向后解析,每当遇到起始标签或者结束标签、特性、文本或者其他的XML语法时,就会触发一个事件。然后,当事件发生时,具体要怎么做就由开发人员决定。

DOM是针对XML的基于树的API。它关注的不仅仅是解析XML代码,而是使用一系列互相关联的对象来表示这些代码,而这些对象可以被修改且无需重新解析代码就能直接访问它们。DOM是语言无关的API,他没有与某种语言绑定。

6.1.3  点的层次

DOM定义Node的接口以及许多种节点类型来表示XML节点的多个方面:

1  Document——最顶层的节点,所有的其他节点都是附属于它的。

2  DocumentType——DTD引用(使用语法)的对象表现形式,例如。它不能包含子节点。

3  DocumentFragment——可以像Document一样来保存其他节点。

4  Element——表示起始标签和结束标签之间的内容,例如或者。这是唯一可以同时包含特性和子节点的节点类型。

5  Attr——代表一对特性名和特性值。这个节点类型不能包含子节点。

Text——代表XML文档中的在起始标签和结束标签之间,或者CData Section内包含的普通文本。这个节点类型不能包含子节点。

8  CDataSection——的对象表现形式。这个节点类型仅能包含文本节点Text作为子节点。

9  Entity——表示在DTD中的一个实体定义,例如。这个节点类型不能包含子节点。

10  EntityReference——代表一个实体引用,例如"这个节点类型不能包含子节点。

11  ProcessingInstruction——代表一个PI。这个节点类型不能包含子节点。

12  Comment——代表XML注释。这个节点类型不能包含子节点。

13  Notation——代表在DTD中定义的记号。这个很少用到,所以在本书中不会讨论。

Node接口定义了对应不同节点类型的12个常量(它们会在即将讨论的nodeType特性中使用到):

1  Node.ELEMENT_NODE (1)

2  Node.ATTRIBUTE_NODE (2)

3  Node.TEXT_NODE (3)

4  Node.CDATA_SECTION_NODE (4)

5  Node.ENTITY_REFERENCE_NODE (5)

6  Node.ENTITY_NODE (6)

7  Node.PROCESSING_INSTRUCTION_NODE (7)

8  Node.COMMENT_NODE (8)

9  Node.DOCUMENT_NODE (9)

10  Node.DOCUMENT_TYPE_NODE (10)

11  Node.DOCUMENT_FRAGMENT_NODE (11)

12  Node.NOTATION_NODE (12)

Node接口也定义了一些所有节点类型都包含的特性和方法。我们在下面的表格中列出了这些特性和方法:

 

 

特性/方法

类型/返回类型

   

nodeName

String

节点的名字;根据节点的类型而定义

nodeValue

String

节点的值;根据节点的类型而定义

nodeType

Number

节点的类型常量值之一

ownerDocument

Document

指向这个节点所属的文档

firstChild

Node

指向在childNodes列表中的第一个节点

lastChild

Node

指向在childNodes列表中的最后一个节点

childNodes

NodeList

所有子节点的列表

previousSibling

Node

指向前一个兄弟节点;如果这个节点就是第一个兄弟节点,那么该值为null

nextSibling

Node

指向后一个兄弟节点;如果这个节点就是最后一个兄弟节点,那么该值为null

hasChildNodes()

Boolean

childNodes包含一个或多个节点时,返回真

attributes

NamedNodeMap

包含了代表一个元素的特性的Attr对象;仅用于Element节点

appendChild(node)

Node

node添加到childNodes的末尾

removeChild(node)

Node

childNodes中删除node

replaceChild
(newnode, oldnode)

Node

childNodes中的oldnode替换成newnode

insertBefore
(newnode, refnode)

Node

childNodes中的refnode之前插入newnode

除节点外,DOM还定义了一些助手对象,它们可以和节点一起使用,但不是DOM文档必有的部分。

1  NodeList——节点数组,按照数值进行索引;用来表示一个元素的子节点。

2  NamedNodeMap——同时用数值和名字进行索引的节点表;用于表示元素特性。

6.1.4  特定语言的DOM

任何基于XML的语言,如XHTMLSVG,因为它们从技术上来说还是XML,仍然可以利用刚刚介绍的核心DOM。然而,很多语言会继续定义它们自己的DOM来扩展XML核心以提供语言的特色功能。

6.2  DOM的支持

        并不是所有的浏览器对 DOM 的支持都一样。一般来说,Mozilla DOM 标准支持最好,

这个领域中落在最后的是IE,它对DOM Level 1的实现都还不完整,尚有很多方面有待完善。

6.3  使用DOM

document 对象是BOM 的一部分,同时也是HTML DOM HTMLDocument 对象的一种表现形式,反过来说,它也是XML DOM Document 对象

6.3.1  访问 节点

在下面的几节中考虑下面的HTML页面:

要访问元素(你应该明白这是该文件的document元素),你可以使用documentdocumentElement特性:

var oHtml = document.documentElement;

现在变量oHtml包含一个表示HTMLElement对象。如果你想取得元素,下面的可以实现:

也可以使用childNodes特性来完成同样的工作。只需把它当成普通的JavaScript Array,使用方括号标记:

你还可以通过使用childNodes.length特性来获取子节点的数量:

注意方括号标记其实是NodeListJavaScript中的简便实现。实际上正式的从childNodes列表中获取子节点的方法是使用item()方法:

HTML DOM页定义了document.body作为指向元素的指针:

有了oHtmloHeadoBody这三个变量,就可以先尝试确定它们之间的关系:

这一小段代码测试并验证了oBodyoHeadparentNode特性都是指向oHtml变量,同时使用previousSiblingnextSibling特性来建立它们之间的关系。最后一行确认了oHeadownerDocument特性事实上是指向该文档。

6.3.2  检测节点类型

我们可以通过使用nodeType特性检验节点类型:

这个例子中,document.nodeType返回9,等于Node.DOCUMENT_NODE;同时document. documentElement.nodeType返回1,等于Node.ELEMENT_NODE

也可以用Node常量来匹配这些值:

这段代码可以在Mozilla 1.0+Opera 7.0+Safari 1.0+上正常运行。不幸的是,IE不支持这些常量,所以这些代码在IE上会产生错误。所幸,可以通过定义匹配节点类型的常量来纠正这种情况,正如下面这样:

6.3.3  处理特性

只有Element节点才能有特性。Element节点的attributes属性其实是NamedNodeMap,它提供一些用于访问和处理其内容的方法:

1  getNamedItem(name)——返回nodeName性值等于name的节点;

2  removeNamedItem(name)——删除nodeName性值等于name的节点;

3  setNamedItem(node)——将node添加到列表中,按其nodeName性进行索引;

4 item(pos)——像NodeList一样,返回在位置pos的节点;

NamedNodeMap对象也有一个length属性来指示它所包含的节点的数量。

NamedNodeMap用于表示特性时,其中每个节点都是Attr节点,它的nodeName性被设置为特性名称,而nodeValue性被设置为特性的值。例如,假设有这样一个元素:

同时,假设变量oP包含指向这个元素的一个引用。于是可以这样访问id特性的值:

还可以通过给nodeValue性赋新值来改变id性:

Attr节点也有一个完全等同于(同时也完全同步于)nodeValue属性的value属性,并且有name属性和nodeName属性保持同步。我们可以随意使用这些属性来修改或变更特性。

因为这个方法有些累赘,DOM又定义了三个元素方法来帮助访问特性:

q  getAttribute(name)——等于attributes.getNamedItem(name).value

q  setAttribute(name, newvalue)——等于attribute.getNamedItem(name).value = newvalue

q  removeAttribute(name)——等于attributes.removeNamedItem(name)

这些方法相当有用,可以直接处理特性值,完全地隐藏Attr节点。所以,要获取前面用的

id特性,只需这样做:

var sId = oP.getAttribute("id");

同时要更改ID,可以这样做

正如你所看到的,这些方法要比使用NamedNodeMap的方法简洁得多。

6.3.4  访问指定节点

1. getElementsByTagName()

tagName特性总是等于小于号之后紧随的名称

下一行代码返回文档中所有元素的列表:

var oImgs = document.getElementsByTagName("img");

在把所有图形都存于oImgs后,只需使用方括号标记或者item()方法(getElementsByTag- Name()返回一个和childNodes一样的NodeList),就可以像访问子节点那样逐个访问这些节点了:

2. getElementsByName()

HTML DOM 定义了 getElementsByName() ,它用来获取所有 name 特性等于指定值的元素的。

3. getElementById()

这是 HTML DOM 定义的第二种方法,它将返回 id 特性等于指定值的元素。在 HTML 中, id 特性是唯一的——这意味着没有两个元素可以共享同一个 id

6.3.5  创建和操作节点

1. 创建新节点

DOM Document (文档)中有一些方法用于创建不同类型的节点

面的表格列出了包含在DOM Level 1中的方法,并列出不同的浏览器是否支持项。

   

   

IE

MOZ

OP

SAF

createAttribute
(name)

用给定名称name创建特性节点

×

×

×

createCDATASection
(text)

用包含文本text的文本子节点创建一个CDATA Section

×

createComment(text)

创建包含文本text的注释节点

×

×

×

×

(续)

   

   

IE

MOZ

OP

SAF

createDocument
Fragment()

创建文档碎片节点

×

×

×

×

createElement
(tagname)

创建标签名为tagname的元素

×

×

×

×

createEntity
Reference(name)

创建给定名称的实体引用节点

×

createProcessing
Instruction(target,
data)

创建包含给定targetdataPI节点

×

createTextNode(text)

创建包含文本text的文本节点

×

×

×

×

最常用到的几个方法是:createDocumentFragment()createElement()createText- Node()

2. createElement()createTextNode()appendChild()

假设有如下HTML页面:

现在想使用DOM来添加下列代码到上面这个页面中:

这里可以使用createElement()createTextNode()来达到目的。下面是实现步骤:

首先,创建

元素:

var oP = document.createElement("p");

第二,创建文本节点:

下一步,把文本节点加入到元素中。可以用在本章前面简要提到的appendChild()方法来完成这个任务。每种节点类型都有appendChild()方法,它的用途是将给定的节点添加到某个节点的childNodes列表的尾部。在这个例子中,应将文本节点追加到

元素中:

oP.appendChild(oText);

不过还没完成全部操作。已经创建了一个

元素和一个文本节点,并且将它们关联在一起了,但这个元素在文档中仍然没有一席之地。要实际可见,必须将这个元素附加到document.body元素或者其中任意子节点上。然后,可以再次使用appendChild()方法:

document.body.appendChild(oP);

在这里,我必须谨慎地告诉你所有的DOM操作必须在页面完全载入之后才能进行。当页面正在载入时,要向DOM插入相关代码是不可能的,因为在页面完全下载到客户端机器之前,是无法完全构建DOM树的。因为这个原因,必须使用onload事件句柄来执行所有的代码。

3. removeChild()replaceChild()insertBefore()

如果有个已经包含"Hello World!"消息的页面,要把这个消息删除,可以使用类似下面方法:

replaceChild()方法有两个参数:被添加的节点和被替换的节点。


可能想让两个消息同时出现。如果想让新消息出现在老消息之后,只要使用appendChild()方法:


insertBefore()方法。这个方法接受两个参数:要添加的节点和插在哪个节点之前。

4. createDocumentFragment()

一旦把节点添加到document.body(或者它的后代节点)中,页面就会更新并反映出这个变化。对于少量的更新,这是很好的,就像在前面的例子中那样。然而,当要向document添加大量数据时,如果逐个添加这些变动,这个过程有可能会十分缓慢。为解决这个问题,可以创建一个文档碎片,把所有的新节点附加其上,然后把文档碎片的内容一次性添加到document中。

假设你想创建十个新段落。若使用前面学到的方法,可能会写出这种代码:

这段代码运行良好,但问题是它调用了十次document.body.appendChild(),每次都要产生一次页面刷新。这时,文档碎片就十分有用:

在这段代码中,每个新的

元素都被添加到文档碎片中。然后,这个碎片被作为参数传递给 appendChild() 。这里对 appendChild() 的调用实际上并不是把文档碎片节点本身追加到 元素中;而是仅仅追加碎片中的子节点。

6.4  HTML DOM特征功能

核心DOM的特性和方法是通用的,是为了在各种情况下操作所有XML文档而设计的。HTML DOM的特性和方法是在专门针对HTML的同时也让一些DOM操作更加简便。这包括将特性作为属性进行访问的能力,以及特定于元素的属性和方法,这些扩展可以完成一些常见的任务,例如搭建表格,更加简便快速。

6.4.1  让特性像属性一样

大部分情况下,HTML DOM元素中包含的所有特性都是可作为属性。例如,假设有如下图像元素:

如果要使用核心的DOM来获取和设置srcborder特性,那么要用getAttribute()setAttribute()方法:

然而,使用HTML DOM,可以使用同样名称的属性来获取和设置这些值:

唯一的特性名和属性名不一样的特例是class特性,它是用来指定应用于某个元素的一个CSS类,例如:

因为classECMAScript中是一个保留字,在JavaScript中,它不能被作为变量名、属性名或者函数名。于是,相应的属性名就变成className

6.4.2  table 方法

假设想使用DOM来创建如下的HTML表格:


如果想通过核心 DOM 方法来完成这个任务, 代码十分的冗长而且有些难于理解。为了协助建立表格,HTML DOM 等元素添加了一些特性和方法。

元素添加了以下内容:

q  caption——指向

元素的集合

q  tFoot——指向

元素(如果存在);

q  tHead——指向

元素(如果存在);

q  rows——表格中所有行的集合;

q  createTHead()——创建

元素并将其放入表格;

q  createTFoot()——创建

元素并将其放入表格;

q  createCaption()——创建

元素;

q  deleteTFoot()——删除

元素;

q  deleteCaption()——删除

元素添加了以下内容:

q  rows——

中所有行的集合;

q  deleteRow(position)——删除指定位置上的行;

q  insertRow(position)——在rows集合中的指定位置上插入一个新行。

元素中添加了以下内容:

q  cells——

元素中所有的单元格的集合;

q  deleteCell(position)——删除给定位置上的单元格;

q  insertCell(position)——在cells集合的给定位置上插入一个新的单元格。

6.5  遍历DOM

到目前为止,我们讨论的功能都仅仅是DOM Level 1的部分。本节将介绍一些DOM Level 2 的功能,尤其是和遍历DOM 文档相关的DOM Level 2 遍历(traversal )和范围(range )规范中的对象。这些功能只有在Mozilla Konqueror/Safari 中才有
6.5.1  NodeIterator

第一个有关的对象是NodeIterator,用它可以对DOM树进行深度优先的搜索,如果要查找页面中某个特定类型的信息(或者元素),这是相当有用的。要理解NodeIterator到底做了什么,考虑下面的HTML页面:

这个页面可以转换成由图6-2表示的DOM树。

  6-2

当使用NodeIterator时,可以从document元素()开始,按照一种系统的路——也就是大家熟知的深度优先搜索——遍历整个DOM树。在这种搜索方式中,遍历从父节点开始,到子节点,再到子节点的子节点,如此继续,尽可能往深入,直到不能再往下走为止。然后,遍历过程向上回退一层,并进入下一个子节点。例如,在前面展示的DOM树中,遍历过程在回退到前,先访问了,然后,然后</span></span><span style="font-family: 宋体;">,然后是文本节点</span><span class="50"><span style="font-size: 9.5pt;">"example"</span></span><span style="font-family: 宋体;">。图</span><span>6-3</span><span style="font-family: 宋体;">显示了这个遍历过程的完整路径。</span></p> <p style="margin-top: 7.5pt;"><span></span></p> <p style="margin: 0cm 20pt 7.5pt 50.6pt; text-indent: -30.6pt;"><span style="font-family: 宋体;">图</span><span>  6-3</span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="position: absolute; z-index: 24; left: 0px; margin-left: -54px; margin-top: 20px; width: 0px; height: 42px;"></span><span style="font-family: 宋体;">最佳的思考深度优先搜索的方法就是从第一个节点左边的第一个节点起沿着树的最外沿画线。只要这条线从左侧经过某个节点,那么这个节点就是搜索中下一个出现的节点(图</span><span>6-3</span><span style="font-family: 宋体;">中的粗线代表了这条线)。</span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">要创建</span><span class="50"><span style="font-size: 9.5pt;">NodeIterator</span></span><span style="font-family: 宋体;">对象,请使用</span><span class="50"><span style="font-size: 9.5pt;">document</span></span><span style="font-family: 宋体;">对象的</span><span class="50"><span style="font-size: 9.5pt;">createNodeIterator()</span></span><span style="font-family: 宋体;">方法。这个方法接受四个参数:</span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span>(1) </span><span class="50"><span style="font-size: 9.5pt;">root</span></span><span style="font-family: 宋体;">——从树中开始搜索的那个节点。</span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span>(2) </span><span class="50"><span style="font-size: 9.5pt;">whatToShow</span></span><span style="font-family: 宋体;">——一个数值代码,代表哪些节点需要访问。</span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span>(3) </span><span class="50"><span style="font-size: 9.5pt;">filter</span></span><span style="font-family: 宋体;">——</span><span>NodeFilter</span><span style="font-family: 宋体;">对象,用来决定需要忽略哪些节点。</span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span>(4) </span><span class="50"><span style="font-size: 9.5pt;">entityReferenceExpansion</span></span><span style="font-family: 宋体;">——</span><span style="font-family: 宋体;">布尔值,表示是否需要扩展实体引用。</span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">通过应用下列一个或多个常量,</span><span class="50"><span style="font-size: 9.5pt;">whatToShow</span></span><span style="font-family: 宋体;">参数可以决定哪些节点可以访问:</span></p> <p class="a2"><span style="font-size: 9pt; font-family: Wingdings;">q<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">  </span></span><span class="50"><span style="font-size: 9.5pt;">NodeFilter.SHOW_ALL</span></span><span style="font-family: 宋体;">——显示所有的节点类型;</span></p> <p class="a2"><span style="font-size: 9pt; font-family: Wingdings;">q<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">  </span></span><span class="50"><span style="font-size: 9.5pt;">NodeFilter.SHOW_ELEMENT</span></span><span style="font-family: 宋体;">——显示元素节点;</span></p> <p class="a2"><span style="font-size: 9pt; font-family: Wingdings;">q<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">  </span></span><span class="50"><span style="font-size: 9.5pt;">NodeFilter.SHOW_ATTRIBUTE</span></span><span style="font-family: 宋体;">——显示特性节点;</span></p> <p class="a2"><span style="font-size: 9pt; font-family: Wingdings;">q<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">  </span></span><span class="50"><span style="font-size: 9.5pt;">NodeFilter.SHOW_TEXT</span></span><span>——</span><span style="font-family: 宋体;">显示文本节点;</span></p> <p class="a2"><span style="font-size: 9pt; font-family: Wingdings;">q<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">  </span></span><span class="50"><span style="font-size: 9.5pt;">NodeFilter.SHOW_CDATA_SECTION</span></span><span>——</span><span style="font-family: 宋体;">显示</span><span class="50"><span style="font-size: 9.5pt;">CData section</span></span><span style="font-family: 宋体;">节点;</span></p> <p class="a2"><span style="font-size: 9pt; font-family: Wingdings;">q<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">  </span></span><span class="50"><span style="font-size: 9.5pt;">NodeFilter.SHOW_ENTITY_REFERENCE</span></span><span>——</span><span style="font-family: 宋体;">显示实体引用节点;</span></p> <p class="a2"><span style="font-size: 9pt; font-family: Wingdings;">q<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">  </span></span><span class="50"><span style="font-size: 9.5pt;">NodeFilter.SHOW_ENTITY</span></span><span>——</span><span style="font-family: 宋体;">显示实体节点;</span></p> <p class="a2"><span style="font-size: 9pt; font-family: Wingdings;">q<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">  </span></span><span class="50"><span style="font-size: 9.5pt;">NodeFilter.SHOW_PROCESSING_INSTRUCTION</span></span><span>——</span><span style="font-family: 宋体;">显示</span><span>PI</span><span style="font-family: 宋体;">节点;</span></p> <p class="a2"><span style="font-size: 9pt; font-family: Wingdings;">q<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">  </span></span><span class="50"><span style="font-size: 9.5pt;">NodeFilter.SHOW_COMMENT</span></span><span>——</span><span style="font-family: 宋体;">显示注释节点;</span></p> <p class="a2"><span style="font-size: 9pt; font-family: Wingdings;">q<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">  </span></span><span class="50"><span style="font-size: 9.5pt;">NodeFilter.SHOW_DOCUMENT</span></span><span>——</span><span style="font-family: 宋体;">显示文档节点;</span></p> <p class="a2"><span style="font-size: 9pt; font-family: Wingdings;">q<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">  </span></span><span class="50"><span style="font-size: 9.5pt;">NodeFilter.SHOW_DOCUMENT_TYPE</span></span><span>——</span><span style="font-family: 宋体;">显示文档类型节点;</span></p> <p class="a2"><span style="font-size: 9pt; font-family: Wingdings;">q<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">  </span></span><span class="50"><span style="font-size: 9.5pt;">NodeFilter.SHOW_DOCUMENT_FRAGMENT</span></span><span>——</span><span style="font-family: 宋体;">显示文档碎片节点;</span></p> <p class="a2"><span style="font-size: 9pt; font-family: Wingdings;">q<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">  </span></span><span class="50"><span style="font-size: 9.5pt;">NodeFilter.SHOW_NOTATION</span></span><span>——</span><span style="font-family: 宋体;">显示记号节点。</span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">可以通过使用二进制或操作符来组合多个值:</span></p> <p class="a1" style="margin: 6pt 0cm;"><span></span></p> <p class="MsoNormal" style="text-indent: 17.8pt;"><span class="50"><span style="font-size: 9.5pt;">createNodeIterator()</span></span><span style="font-family: 宋体;">的</span><span class="50"><span style="font-size: 9.5pt;">filter</span></span><span style="font-family: 宋体;">(过滤器)参数可以指定一个自定义的</span><span>NodeFilter</span><span style="font-family: 宋体;">对象,但是如果不想使用它的话,也可以留空(</span><span class="50"><span style="font-size: 9.5pt;">null</span></span><span style="font-family: 宋体;">)。</span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">要创建最简单的访问所有节点类型的</span><span class="50"><span style="font-size: 9.5pt;">NodeIterator</span></span><span style="font-family: 宋体;">对象,可以使用下面的代码:</span></p> <p class="a1" style="margin: 6pt 0cm;"><span></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">要在搜索过程中前进或者后退,可以使用</span><span class="50"><span style="font-size: 9.5pt;">nextNode()</span></span><span style="font-family: 宋体;">和</span><span class="50"><span style="font-size: 9.5pt;">previousNode()</span></span><span style="font-family: 宋体;">方法:</span></p> <p class="a1" style="margin: 6pt 0cm 0.0001pt;"><span style="position: absolute; z-index: 25; left: 0px; margin-left: -39px; margin-top: 15px; width: 0px; height: 21px;"></span><span></span></p> <p class="a1" style="margin: 3pt 0cm 6pt;"><span></span></p> <span style="font-family: 宋体;">假设想列出某个区域内指定</span> <span class="50"><span style="font-size: 9.5pt;"><div/></span></span> <span style="font-family: 宋体;">中包含的所有元素。下列代码可以完成这个任务:</span> <p class="a1" style="margin: 6pt 0cm;"><span></span></p> <p class="MsoNormal" style="margin-bottom: 4.5pt; text-indent: 20pt;"><span style="font-family: 宋体;">当点击了按钮后,将使用包含在</span><span class="50"><span style="font-size: 9.5pt;">div1</span></span><span style="font-family: 宋体;">中的元素的标签名来填充</span><span class="50"><span style="font-size: 9.5pt;"><textarea/></span></span><span style="font-family: 宋体;">:</span></p> <p class="a1" style="margin: 0cm 0cm 0.0001pt;"><span>P</span></p> <p class="a1" style="margin: 0cm 0cm 0.0001pt;"><span>B</span></p> <p class="a1" style="margin: 0cm 0cm 0.0001pt;"><span>UL</span></p> <p class="a1" style="margin: 0cm 0cm 0.0001pt;"><span>LI</span></p> <p class="a1" style="margin: 0cm 0cm 0.0001pt;"><span>LI</span></p> <p class="a1" style="margin: 0cm 0cm 0.0001pt;"><span>LI</span></p> <p class="MsoNormal" style="margin-top: 4.5pt; text-indent: 20pt;"><span style="position: absolute; z-index: 26; left: 0px; margin-left: 555px; margin-top: 25px; width: 0px; height: 21px;"></span><span style="font-family: 宋体;">但假设不想在结果中包含</span><span class="50"><span style="font-size: 9.5pt;"><p/></span></span><span style="font-family: 宋体;">元素。这就不能仅使用</span><span class="50"><span style="font-size: 9.5pt;">whatToShow</span></span><span style="font-family: 宋体;">参数来完成。这种情况下,你需要自定义一个</span><span class="50"><span style="font-size: 9.5pt;">NodeFilter</span></span><span style="font-family: 宋体;">对象。</span></p> <p class="MsoNormal" style="text-indent: 17.8pt;"><span class="50"><span style="font-size: 9.5pt;">NodeFilter</span></span><span style="font-family: 宋体; letter-spacing: -0.1pt;">对象只有一个方法:</span><span class="50"><span style="font-size: 9.5pt;">acceptNode()</span></span><span style="font-family: 宋体;">。<span style="letter-spacing: -0.1pt;">如果应该访问给定的节点,那么该方法返回</span></span><span class="50"><span style="font-size: 9.5pt; letter-spacing: -0.4pt;">NodeFilter.FILTER_ACCEPT</span></span><span style="font-family: 宋体;">;如果不应该访问给定节点,则返回</span><span class="50"><span style="font-size: 9.5pt; letter-spacing: -0.4pt;">NodeFilter.FILTER_REJECT</span></span><span style="font-family: 宋体;">。然而,不能使用</span><span class="50"><span style="font-size: 9.5pt;">NodeFilter</span></span><span style="font-family: 宋体;">类来创建这个对象,因为这个类是一个抽象类。在</span>Java<span style="font-family: 宋体;">或一些其他的语言中,必须重新定义一个</span><span class="50"><span style="font-size: 9.5pt;">NodeFilter</span></span><span style="font-family: 宋体;">的子类,不过,因为这是在</span><span class="50"><span style="font-size: 9.5pt;">JavaScript</span></span><span style="font-family: 宋体;">中,就不必这么做了。</span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">现在,只要创建任意一个有</span><span class="50"><span style="font-size: 9.5pt;">acceptNode()</span></span><span style="font-family: 宋体;">方法的对象,就可以将它传给</span><span class="50"><span style="font-size: 9.5pt;">createNodeIter- ator()</span></span><span style="font-family: 宋体;">方法,如下所示:</span></p> <p class="a1" style="margin: 6pt 0cm;"><span></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">若要禁止</span><span class="50"><span style="font-size: 9.5pt;"><p/></span></span><span style="font-family: 宋体;">元素节点,只需检查</span><span class="50"><span style="font-size: 9.5pt;">tagName</span></span><span style="font-family: 宋体;">属性,如果它等于</span><span class="50"><span style="font-size: 9.5pt;">"P"</span></span><span style="font-family: 宋体;">,就返回</span><span class="50"><span style="font-size: 9.5pt;">NodeFilter. FILTER_REJECT</span></span><span style="font-family: 宋体;">:</span></p> <p class="a1" style="margin: 6pt 0cm;"><span></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">如果将这段代码包含在前面的例子中,代码如下:</span></p> <p class="10" style="margin: 6pt 0cm 0.0001pt;"><span style="position: absolute; z-index: 27; margin-left: -39px; margin-top: 336px; width: 0px; height: 21px;"></span><span></span></p> <p class="a1" style="margin: 3pt 0cm 6pt;"><span></span></p> <p class="a1" style="margin: 3pt 0cm 6pt;"><span></span></p> <p class="MsoNormal" style="margin-bottom: 6pt; text-indent: 20pt;"><span style="font-family: 宋体;">当这次再点击按钮时,</span><span class="50"><span style="font-size: 9.5pt;"><textarea/></span></span><span style="font-family: 宋体;">中就会出现下列内容:</span></p> <p class="a1" style="margin: 0cm 0cm 0.0001pt;"><span>UL</span></p> <p class="a1" style="margin: 0cm 0cm 0.0001pt;"><span>LI</span></p> <p class="a1" style="margin: 0cm 0cm 0.0001pt;"><span>LI</span></p> <p class="a1" style="margin: 0cm 0cm 0.0001pt;"><span>LI</span></p> <p class="MsoNormal" style="margin-top: 6pt; text-indent: 20pt;"><span style="font-family: 宋体;">注意</span><span class="50"><span style="font-size: 9.5pt;">"P"</span></span><span style="font-family: 宋体;">和</span><span class="50"><span style="font-size: 9.5pt;">"B"</span></span><span style="font-family: 宋体;">都没有出现在列表中。这是因为排除</span><span class="50"><span style="font-size: 9.5pt;"><p/></span></span><span style="font-family: 宋体;">元素后,不仅从迭代搜索中去掉了它,也去掉了它的所有后代节点。因为</span><span class="50"><span style="font-size: 9.5pt;"><b/></span></span><span style="font-family: 宋体;">是</span><span class="50"><span style="font-size: 9.5pt;"><p/></span></span><span style="font-family: 宋体;">的一个子节点,所以它也被跳过。</span></p> <p class="MsoNormal" style="text-indent: 17.8pt;"><span class="50"><span style="font-size: 9.5pt;">NodeIterator</span></span><span style="font-family: 宋体;">对象展示了一种有序的自顶向下遍历整个</span><span>DOM</span><span style="font-family: 宋体;">树(或者仅仅其中一部分)的方式。然而可能想遍历到树的特定区域时,再看看某个节点的兄弟节点或者子节点。如果是这种情况,可以使用</span><span class="50"><span style="font-size: 9.5pt;">TreeWalker</span></span><span style="font-family: 宋体;">。</span></p> <p class="MsoNormal" style="text-indent: 17.8pt;">6.5.2  <strong><span style="font-family: Courier;">TreeWalker</span></strong> </p> <p class="MsoNormal" style="text-indent: 17.8pt;"><span class="50"><span style="font-size: 9.5pt;">TreeWalker</span></span><span style="font-family: 宋体;">有点像</span><span class="50"><span style="font-size: 9.5pt;">NodeIterator</span></span><span style="font-family: 宋体;">的大哥:它有</span><span class="50"><span style="font-size: 9.5pt;">NodeIterator</span></span><span style="font-family: 宋体;">所有的功能(</span><span class="50"><span style="font-size: 9.5pt;">nextNode()</span></span><span style="font-family: 宋体;">和</span><span class="50"><span style="font-size: 9.5pt;">previousNode()</span></span><span style="font-family: 宋体;">),并且添加了一些遍历方法:</span></p> <p class="a2"><span style="font-size: 9pt; font-family: Wingdings;">q<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">  </span></span><span class="50"><span style="font-size: 9.5pt;">parentNode()</span></span><span style="font-family: 宋体;">——进入当前节点的父节点;</span></p> <p class="a2"><span style="font-size: 9pt; font-family: Wingdings;">q<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">  </span></span><span class="50"><span style="font-size: 9.5pt;">firstChild()</span></span><span style="font-family: 宋体;">——进入当前节点的第一个子节点;</span></p> <p class="a2"><span style="font-size: 9pt; font-family: Wingdings;">q<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">  </span></span><span class="50"><span style="font-size: 9.5pt;">lastChild()</span></span><span style="font-family: 宋体;">——进入当前节点的最后一个节点;</span></p> <p class="a2"><span style="font-size: 9pt; font-family: Wingdings;">q<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">  </span></span><span class="50"><span style="font-size: 9.5pt;">nextSibling()</span></span><span style="font-family: 宋体;">——进入当前节点的下一个兄弟节点;</span></p> <p class="a2"><span style="font-size: 9pt; font-family: Wingdings;">q<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">  </span></span><span class="50"><span style="font-size: 9.5pt;">previousSibling()</span></span><span style="font-family: 宋体;">——进入当前节点的前一个兄弟节点。</span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">要开始使用</span><span class="50"><span style="font-size: 9.5pt;">TreeWalker</span></span><span style="font-family: 宋体;">,其实完全可以像使用</span><span class="50"><span style="font-size: 9.5pt;">NodeIterator</span></span><span style="font-family: 宋体;">那样,只要把</span><span class="50"><span style="font-size: 9.5pt;">createNode- Iterator()</span></span><span style="font-family: 宋体;">的调用改为调用</span><span class="50"><span style="font-size: 9.5pt;">createTreeWalker()</span></span><span style="font-family: 宋体;">,这个函数接受同样的参数:</span></p> <p class="a1" style="margin: 6pt 0cm;"><span style="position: absolute; z-index: 28; left: 0px; margin-left: 555px; margin-top: 45px; width: 0px; height: 21px;"></span><span></span></p> <p class="10" style="margin: 6pt 0cm;"><span></span></p> <p class="10" style="margin: 6pt 0cm;"><span></span></p> <p class="10" style="margin: 6pt 0cm;"><span style="font-family: 宋体;">假设只想访问前面所显示的</span><span>HTML</span><span style="font-family: 宋体;">页面中的</span><span class="50"><span style="font-size: 9.5pt;"><li/></span></span><span style="font-family: 宋体;">元素。可以写一个只接受标签名为</span><span class="50"><span style="font-size: 9.5pt;">"LI"</span></span><span style="font-family: 宋体;">的元素的过滤器,而这里,可以使用</span><span class="50"><span style="font-size: 9.5pt;">TreeWalker</span></span><span style="font-family: 宋体;">来进行更有目的性的遍历:</span> </p> <p class="a1" style="margin: 6pt 0cm 0.0001pt;"><span style="position: absolute; z-index: 29; left: 0px; margin-left: -39px; margin-top: 147px; width: 0px; height: 21px;"></span><span></span></p> <p class="10" style="margin: 3pt 0cm 6pt;"><span></span></p> <p class="10" style="margin: 6pt 0cm 0.0001pt;"><span></span></p> <p class="10" style="margin: 0cm 0cm 0.0001pt;"><span>             </span></p> <p class="10" style="margin: 0cm 0cm 6pt 2.8pt; line-height: 9pt;"><span></span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">在这个例子中,创建了</span><span class="50"><span style="font-size: 9.5pt;">TreeWalker</span></span><span style="font-family: 宋体;">并立刻调用了</span><span class="50"><span style="font-size: 9.5pt;">firstChild()</span></span><span style="font-family: 宋体;">方法,将</span><span class="50"><span style="font-size: 9.5pt;">walker</span></span><span style="font-family: 宋体;">指到</span><span class="50"><span style="font-size: 9.5pt;"><p/></span></span><span style="font-family: 宋体;">元素(因为</span><span class="50"><span style="font-size: 9.5pt;"><p/></span></span><span style="font-family: 宋体;">是</span><span class="50"><span style="font-size: 9.5pt;">div1</span></span><span style="font-family: 宋体;">的第一个子节点)。在接下来的一行里调用</span><span class="50"><span style="font-size: 9.5pt;">nextSibling()</span></span><span style="font-family: 宋体;">后,</span><span class="50"><span style="font-size: 9.5pt;">walker</span></span><span style="font-family: 宋体;">指到了</span><span class="50"><span style="font-size: 9.5pt;"><p/></span></span><span style="font-family: 宋体;">的下一个兄弟节点</span><span class="50"><span style="font-size: 9.5pt;"><ul/></span></span><span style="font-family: 宋体;">上。然后,调用</span><span class="50"><span style="font-size: 9.5pt;">firstChild()</span></span><span style="font-family: 宋体;">返回到</span><span class="50"><span style="font-size: 9.5pt;"><ul/></span></span><span style="font-family: 宋体;">下的第一个</span><span class="50"><span style="font-size: 9.5pt;"><li/></span></span><span style="font-family: 宋体;">元素。接下来,在循环内部,通过使用</span><span class="50"><span style="font-size: 9.5pt;">nextSibling()</span></span><span style="font-family: 宋体;">方法对剩下的</span><span class="50"><span style="font-size: 9.5pt;"><li/></span></span><span style="font-family: 宋体;">元素进行迭代。</span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">点击按钮后,应该会看到如下输出:</span></p> <p class="a1" style="margin: 3pt 0cm 0.0001pt;"><span>LI</span></p> <p class="a1" style="margin: 0cm 0cm 0.0001pt;"><span>LI</span></p> <p class="a1" style="margin: 0cm 0cm 3.75pt;"><span>LI</span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="font-family: 宋体;">最后要说的是,如果对将要遍历的</span><span>DOM</span><span style="font-family: 宋体;">树的结构有所了解的话,</span><span class="50"><span style="font-size: 9.5pt;">TreeWalker</span></span><span style="font-family: 宋体;">更加有用;而同时,如果并不知道这个结构的话,使用</span><span class="50"><span style="font-size: 9.5pt;">NodeIterator</span></span><span style="font-family: 宋体;">更加实际有效。</span></p> <div class="page" style="text-align: left;"> <p class="11" style="margin: 12pt 0cm 7.5pt;"><span>6.6  </span><span style="font-family: 黑体;">测试与</span><span>DOM</span><span style="font-family: 黑体;">标准的一致性</span></p> <p class="MsoNormal" style="text-indent: 20pt;"><span style="position: absolute; z-index: 30; left: 0px; margin-left: 555px; margin-top: 15px; width: 0px; height: 21px;"></span><span style="font-family: 宋体;">现在你肯定可以说出</span><span>DOM</span><span style="font-family: 宋体;">的许多方面。正因如此,你需要一种方法来确定给定的</span><span>DOM</span><span style="font-family: 宋体;">实现到底支持</span><span>DOM</span><span style="font-family: 宋体;">的哪些部分。</span><span style="font-family: 宋体;">有趣的是,这个对象就叫做</span><span class="50"><span style="font-size: 9.5pt;">implementation</span></span><span style="font-family: 宋体;">。</span></p> <p class="MsoNormal" style="text-indent: 17.8pt;"><span class="50"><span style="font-size: 9.5pt;">implementation</span></span><span style="font-family: 宋体;">对象是</span>DOM<span style="font-family: 宋体;">文档的一个特性,因此,也是浏览器</span><span class="50"><span style="font-size: 9.5pt;">document</span></span><span style="font-family: 宋体;">对象的一部分。</span><span class="50"><span style="font-size: 9.5pt;">implementation</span></span><span style="font-family: 宋体;">唯一的方法是</span><span class="50"><span style="font-size: 9.5pt;">hasFeature()</span></span><span style="font-family: 宋体;">,它接受两个参数:要检查的特征和特征的版本。例如,如果想检查对</span>XML DOM Level 1<span style="font-family: 宋体;">的支持,可以这样调用:</span></p> <p class="a1" style="margin: 6pt 0cm 4.5pt;">var bXmlLevel1 = document.implementation.hasFeature("XML", "1.0");</p> <p class="11" style="margin: 6pt 0cm 5.25pt;"><span>6.7  DOM Level 3</span></p> <span>2004</span> <span style="font-family: 宋体;">年</span> <span>4</span> <span style="font-family: 宋体;">月,</span> <span>DOM Level 3</span> <span style="font-family: 宋体;">作为</span> <span>W3C</span> <span style="font-family: 宋体;">的一个推荐标准被提出。目前为止,还没有哪个浏览器已经完全实现该标准,只有</span> <span>Mozilla</span> <span style="font-family: 宋体;">已实现了一部分</span> </div> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1174756132682522624"></div> <script type="text/javascript" src="/views/front/js/chanyan.js"></script> <!-- 文章页-底部 动态广告位 --> <div class="youdao-fixed-ad" id="detail_ad_bottom"></div> </div> <div class="col-md-3"> <div class="row" id="ad"> <!-- 文章页-右侧1 动态广告位 --> <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_1"> </div> </div> <!-- 文章页-右侧2 动态广告位 --> <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_2"></div> </div> <!-- 文章页-右侧3 动态广告位 --> <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_3"></div> </div> </div> </div> </div> </div> </div> <div class="container"> <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(javascript,xml,文档,html,mozilla,语言)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1835513551142350848.htm" title="OC语言多界面传值五大方式" target="_blank">OC语言多界面传值五大方式</a> <span class="text-muted">Magnetic_h</span> <a class="tag" taget="_blank" href="/search/ios/1.htm">ios</a><a class="tag" taget="_blank" href="/search/ui/1.htm">ui</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/objective-c/1.htm">objective-c</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>前言在完成暑假仿写项目时,遇到了许多需要用到多界面传值的地方,这篇博客来总结一下比较常用的五种多界面传值的方式。属性传值属性传值一般用前一个界面向后一个界面传值,简单地说就是通过访问后一个视图控制器的属性来为它赋值,通过这个属性来做到从前一个界面向后一个界面传值。首先在后一个界面中定义属性@interfaceBViewController:UIViewController@propertyNSSt</div> </li> <li><a href="/article/1835512542735200256.htm" title="C语言宏函数" target="_blank">C语言宏函数</a> <span class="text-muted">南林yan</span> <a class="tag" taget="_blank" href="/search/C%E8%AF%AD%E8%A8%80/1.htm">C语言</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a> <div>一、什么是宏函数?通过宏定义的函数是宏函数。如下,编译器在预处理阶段会将Add(x,y)替换为((x)*(y))#defineAdd(x,y)((x)*(y))#defineAdd(x,y)((x)*(y))intmain(){inta=10;intb=20;intd=10;intc=Add(a+d,b)*2;cout<<c<<endl;//800return0;}二、为什么要使用宏函数使用宏函数</div> </li> <li><a href="/article/1835511911769272320.htm" title="C语言如何定义宏函数?" target="_blank">C语言如何定义宏函数?</a> <span class="text-muted">小九格物</span> <a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a> <div>在C语言中,宏函数是通过预处理器定义的,它在编译之前替换代码中的宏调用。宏函数可以模拟函数的行为,但它们不是真正的函数,因为它们在编译时不会进行类型检查,也不会分配存储空间。宏函数的定义通常使用#define指令,后面跟着宏的名称和参数列表,以及宏展开后的代码。宏函数的定义方式:1.基本宏函数:这是最简单的宏函数形式,它直接定义一个表达式。#defineSQUARE(x)((x)*(x))2.带参</div> </li> <li><a href="/article/1835511030260789248.htm" title="c++ 的iostream 和 c++的stdio的区别和联系" target="_blank">c++ 的iostream 和 c++的stdio的区别和联系</a> <span class="text-muted">黄卷青灯77</span> <a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/iostream/1.htm">iostream</a><a class="tag" taget="_blank" href="/search/stdio/1.htm">stdio</a> <div>在C++中,iostream和C语言的stdio.h都是用于处理输入输出的库,但它们在设计、用法和功能上有许多不同。以下是两者的区别和联系:区别1.编程风格iostream(C++风格):C++标准库中的输入输出流类库,支持面向对象的输入输出操作。典型用法是cin(输入)和cout(输出),使用>操作符来处理数据。更加类型安全,支持用户自定义类型的输入输出。#includeintmain(){in</div> </li> <li><a href="/article/1835509897106649088.htm" title="Long类型前后端数据不一致" target="_blank">Long类型前后端数据不一致</a> <span class="text-muted">igotyback</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>响应给前端的数据浏览器控制台中response中看到的Long类型的数据是正常的到前端数据不一致前后端数据类型不匹配是一个常见问题,尤其是当后端使用Java的Long类型(64位)与前端JavaScript的Number类型(最大安全整数为2^53-1,即16位)进行数据交互时,很容易出现精度丢失的问题。这是因为JavaScript中的Number类型无法安全地表示超过16位的整数。为了解决这个问</div> </li> <li><a href="/article/1835509770287673344.htm" title="swagger访问路径" target="_blank">swagger访问路径</a> <span class="text-muted">igotyback</span> <a class="tag" taget="_blank" href="/search/swagger/1.htm">swagger</a> <div>Swagger2.x版本访问地址:http://{ip}:{port}/{context-path}/swagger-ui.html{ip}是你的服务器IP地址。{port}是你的应用服务端口,通常为8080。{context-path}是你的应用上下文路径,如果应用部署在根路径下,则为空。Swagger3.x版本对于Swagger3.x版本(也称为OpenAPI3)访问地址:http://{ip</div> </li> <li><a href="/article/1835508130608410624.htm" title="html 中如何使用 uniapp 的部分方法" target="_blank">html 中如何使用 uniapp 的部分方法</a> <span class="text-muted">某公司摸鱼前端</span> <a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/uni-app/1.htm">uni-app</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>示例代码:Documentconsole.log(window);效果展示:好了,现在就可以uni.使用相关的方法了</div> </li> <li><a href="/article/1835508131489214464.htm" title="高级编程--XML+socket练习题" target="_blank">高级编程--XML+socket练习题</a> <span class="text-muted">masa010</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>1.北京华北2114.8万人上海华东2,500万人广州华南1292.68万人成都华西1417万人(1)使用dom4j将信息存入xml中(2)读取信息,并打印控制台(3)添加一个city节点与子节点(4)使用socketTCP协议编写服务端与客户端,客户端输入城市ID,服务器响应相应城市信息(5)使用socketTCP协议编写服务端与客户端,客户端要求用户输入city对象,服务端接收并使用dom4j</div> </li> <li><a href="/article/1835507248395284480.htm" title="【一起学Rust | 设计模式】习惯语法——使用借用类型作为参数、格式化拼接字符串、构造函数" target="_blank">【一起学Rust | 设计模式】习惯语法——使用借用类型作为参数、格式化拼接字符串、构造函数</a> <span class="text-muted">广龙宇</span> <a class="tag" taget="_blank" href="/search/%E4%B8%80%E8%B5%B7%E5%AD%A6Rust/1.htm">一起学Rust</a><a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/Rust%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">Rust设计模式</a><a class="tag" taget="_blank" href="/search/rust/1.htm">rust</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、使用借用类型作为参数二、格式化拼接字符串三、使用构造函数总结前言Rust不是传统的面向对象编程语言,它的所有特性,使其独一无二。因此,学习特定于Rust的设计模式是必要的。本系列文章为作者学习《Rust设计模式》的学习笔记以及自己的见解。因此,本系列文章的结构也与此书的结构相同(后续可能会调成结构),基本上分为三个部分</div> </li> <li><a href="/article/1835506869838376960.htm" title="Python数据分析与可视化实战指南" target="_blank">Python数据分析与可视化实战指南</a> <span class="text-muted">William数据分析</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE/1.htm">数据</a> <div>在数据驱动的时代,Python因其简洁的语法、强大的库生态系统以及活跃的社区,成为了数据分析与可视化的首选语言。本文将通过一个详细的案例,带领大家学习如何使用Python进行数据分析,并通过可视化来直观呈现分析结果。一、环境准备1.1安装必要库在开始数据分析和可视化之前,我们需要安装一些常用的库。主要包括pandas、numpy、matplotlib和seaborn等。这些库分别用于数据处理、数学</div> </li> <li><a href="/article/1835504217729626112.htm" title="Python教程:一文了解使用Python处理XPath" target="_blank">Python教程:一文了解使用Python处理XPath</a> <span class="text-muted">旦莫</span> <a class="tag" taget="_blank" href="/search/Python%E8%BF%9B%E9%98%B6/1.htm">Python进阶</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>目录1.环境准备1.1安装lxml1.2验证安装2.XPath基础2.1什么是XPath?2.2XPath语法2.3示例XML文档3.使用lxml解析XML3.1解析XML文档3.2查看解析结果4.XPath查询4.1基本路径查询4.2使用属性查询4.3查询多个节点5.XPath的高级用法5.1使用逻辑运算符5.2使用函数6.实战案例6.1从网页抓取数据6.1.1安装Requests库6.1.2代</div> </li> <li><a href="/article/1835502705553010688.htm" title="LLM 词汇表" target="_blank">LLM 词汇表</a> <span class="text-muted">落难Coder</span> <a class="tag" taget="_blank" href="/search/LLMs/1.htm">LLMs</a><a class="tag" taget="_blank" href="/search/NLP/1.htm">NLP</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E8%AF%AD%E8%A8%80%E6%A8%A1%E5%9E%8B/1.htm">大语言模型</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%A8%A1%E5%9E%8B/1.htm">大模型</a><a class="tag" taget="_blank" href="/search/llama/1.htm">llama</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a> <div>Contextwindow“上下文窗口”是指语言模型在生成新文本时能够回溯和参考的文本量。这不同于语言模型训练时所使用的大量数据集,而是代表了模型的“工作记忆”。较大的上下文窗口可以让模型理解和响应更复杂和更长的提示,而较小的上下文窗口可能会限制模型处理较长提示或在长时间对话中保持连贯性的能力。Fine-tuning微调是使用额外的数据进一步训练预训练语言模型的过程。这使得模型开始表示和模仿微调数</div> </li> <li><a href="/article/1835502578050363392.htm" title="PHP环境搭建详细教程" target="_blank">PHP环境搭建详细教程</a> <span class="text-muted">好看资源平台</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/php/1.htm">php</a> <div>PHP是一个流行的服务器端脚本语言,广泛用于Web开发。为了使PHP能够在本地或服务器上运行,我们需要搭建一个合适的PHP环境。本教程将结合最新资料,介绍在不同操作系统上搭建PHP开发环境的多种方法,包括Windows、macOS和Linux系统的安装步骤,以及本地和Docker环境的配置。1.PHP环境搭建概述PHP环境的搭建主要分为以下几类:集成开发环境:例如XAMPP、WAMP、MAMP,这</div> </li> <li><a href="/article/1835499615491813376.htm" title="四章-32-点要素的聚合" target="_blank">四章-32-点要素的聚合</a> <span class="text-muted">彩云飘过</span> <div>本文基于腾讯课堂老胡的课《跟我学Openlayers--基础实例详解》做的学习笔记,使用的openlayers5.3.xapi。源码见1032.html,对应的官网示例https://openlayers.org/en/latest/examples/cluster.htmlhttps://openlayers.org/en/latest/examples/earthquake-clusters.</div> </li> <li><a href="/article/1835498925755297792.htm" title="DIV+CSS+JavaScript技术制作网页(旅游主题网页设计与制作)云南大理" target="_blank">DIV+CSS+JavaScript技术制作网页(旅游主题网页设计与制作)云南大理</a> <span class="text-muted">STU学生网页设计</span> <a class="tag" taget="_blank" href="/search/%E7%BD%91%E9%A1%B5%E8%AE%BE%E8%AE%A1/1.htm">网页设计</a><a class="tag" taget="_blank" href="/search/%E6%9C%9F%E6%9C%AB%E7%BD%91%E9%A1%B5%E4%BD%9C%E4%B8%9A/1.htm">期末网页作业</a><a class="tag" taget="_blank" href="/search/html%E9%9D%99%E6%80%81%E7%BD%91%E9%A1%B5/1.htm">html静态网页</a><a class="tag" taget="_blank" href="/search/html5%E6%9C%9F%E6%9C%AB%E5%A4%A7%E4%BD%9C%E4%B8%9A/1.htm">html5期末大作业</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E9%A1%B5%E8%AE%BE%E8%AE%A1/1.htm">网页设计</a><a class="tag" taget="_blank" href="/search/web%E5%A4%A7%E4%BD%9C%E4%B8%9A/1.htm">web大作业</a> <div>️精彩专栏推荐作者主页:【进入主页—获取更多源码】web前端期末大作业:【HTML5网页期末作业(1000套)】程序员有趣的告白方式:【HTML七夕情人节表白网页制作(110套)】文章目录二、网站介绍三、网站效果▶️1.视频演示2.图片演示四、网站代码HTML结构代码CSS样式代码五、更多源码二、网站介绍网站布局方面:计划采用目前主流的、能兼容各大主流浏览器、显示效果稳定的浮动网页布局结构。网站程</div> </li> <li><a href="/article/1835498547785592832.htm" title="【华为OD机试真题2023B卷 JAVA&JS】We Are A Team" target="_blank">【华为OD机试真题2023B卷 JAVA&JS】We Are A Team</a> <span class="text-muted">若博豆</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BA/1.htm">华为</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a> <div>华为OD2023(B卷)机试题库全覆盖,刷题指南点这里WeAreATeam时间限制:1秒|内存限制:32768K|语言限制:不限题目描述:总共有n个人在机房,每个人有一个标号(1<=标号<=n),他们分成了多个团队,需要你根据收到的m条消息判定指定的两个人是否在一个团队中,具体的:1、消息构成为:abc,整数a、b分别代</div> </li> <li><a href="/article/1835497664381284352.htm" title="探索OpenAI和LangChain的适配器集成:轻松切换模型提供商" target="_blank">探索OpenAI和LangChain的适配器集成:轻松切换模型提供商</a> <span class="text-muted">nseejrukjhad</span> <a class="tag" taget="_blank" href="/search/langchain/1.htm">langchain</a><a class="tag" taget="_blank" href="/search/easyui/1.htm">easyui</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>#探索OpenAI和LangChain的适配器集成:轻松切换模型提供商##引言在人工智能和自然语言处理的世界中,OpenAI的模型提供了强大的能力。然而,随着技术的发展,许多人开始探索其他模型以满足特定需求。LangChain作为一个强大的工具,集成了多种模型提供商,通过提供适配器,简化了不同模型之间的转换。本篇文章将介绍如何使用LangChain的适配器与OpenAI集成,以便轻松切换模型提供商</div> </li> <li><a href="/article/1835497538023682048.htm" title="使用Apify加载Twitter消息以进行微调的完整指南" target="_blank">使用Apify加载Twitter消息以进行微调的完整指南</a> <span class="text-muted">nseejrukjhad</span> <a class="tag" taget="_blank" href="/search/twitter/1.htm">twitter</a><a class="tag" taget="_blank" href="/search/easyui/1.htm">easyui</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>#使用Apify加载Twitter消息以进行微调的完整指南##引言在自然语言处理领域,微调模型以适应特定任务是提升模型性能的常见方法。本文将介绍如何使用Apify从Twitter导出聊天信息,以便进一步进行微调。##主要内容###使用Apify导出推文首先,我们需要从Twitter导出推文。Apify可以帮助我们做到这一点。通过Apify的强大功能,我们可以批量抓取和导出数据,适用于各类应用场景。</div> </li> <li><a href="/article/1835497411179540480.htm" title="深入理解 MultiQueryRetriever:提升向量数据库检索效果的强大工具" target="_blank">深入理解 MultiQueryRetriever:提升向量数据库检索效果的强大工具</a> <span class="text-muted">nseejrukjhad</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>深入理解MultiQueryRetriever:提升向量数据库检索效果的强大工具引言在人工智能和自然语言处理领域,高效准确的信息检索一直是一个关键挑战。传统的基于距离的向量数据库检索方法虽然广泛应用,但仍存在一些局限性。本文将介绍一种创新的解决方案:MultiQueryRetriever,它通过自动生成多个查询视角来增强检索效果,提高结果的相关性和多样性。MultiQueryRetriever的工</div> </li> <li><a href="/article/1835497284750635008.htm" title="如何部分格式化提示模板:LangChain中的高级技巧" target="_blank">如何部分格式化提示模板:LangChain中的高级技巧</a> <span class="text-muted">nseejrukjhad</span> <a class="tag" taget="_blank" href="/search/langchain/1.htm">langchain</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>标题:如何部分格式化提示模板:LangChain中的高级技巧内容:如何部分格式化提示模板:LangChain中的高级技巧引言在使用大型语言模型(LLM)时,提示工程是一个关键环节。LangChain提供了强大的提示模板功能,让我们能更灵活地构建和管理提示。本文将介绍LangChain中一个高级特性-部分格式化提示模板,这个技巧可以让你的提示管理更加高效和灵活。什么是部分格式化提示模板?部分格式化提</div> </li> <li><a href="/article/1835496149843275776.htm" title="关于城市旅游的HTML网页设计——(旅游风景云南 5页)HTML+CSS+JavaScript" target="_blank">关于城市旅游的HTML网页设计——(旅游风景云南 5页)HTML+CSS+JavaScript</a> <span class="text-muted">二挡起步</span> <a class="tag" taget="_blank" href="/search/web%E5%89%8D%E7%AB%AF%E6%9C%9F%E6%9C%AB%E5%A4%A7%E4%BD%9C%E4%B8%9A/1.htm">web前端期末大作业</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/%E6%97%85%E6%B8%B8/1.htm">旅游</a><a class="tag" taget="_blank" href="/search/%E9%A3%8E%E6%99%AF/1.htm">风景</a> <div>⛵源码获取文末联系✈Web前端开发技术描述网页设计题材,DIV+CSS布局制作,HTML+CSS网页设计期末课程大作业|游景点介绍|旅游风景区|家乡介绍|等网站的设计与制作|HTML期末大学生网页设计作业,Web大学生网页HTML:结构CSS:样式在操作方面上运用了html5和css3,采用了div+css结构、表单、超链接、浮动、绝对定位、相对定位、字体样式、引用视频等基础知识JavaScrip</div> </li> <li><a href="/article/1835496148601761792.htm" title="HTML网页设计制作大作业(div+css) 云南我的家乡旅游景点 带文字滚动" target="_blank">HTML网页设计制作大作业(div+css) 云南我的家乡旅游景点 带文字滚动</a> <span class="text-muted">二挡起步</span> <a class="tag" taget="_blank" href="/search/web%E5%89%8D%E7%AB%AF%E6%9C%9F%E6%9C%AB%E5%A4%A7%E4%BD%9C%E4%B8%9A/1.htm">web前端期末大作业</a><a class="tag" taget="_blank" href="/search/web%E8%AE%BE%E8%AE%A1%E7%BD%91%E9%A1%B5%E8%A7%84%E5%88%92%E4%B8%8E%E8%AE%BE%E8%AE%A1/1.htm">web设计网页规划与设计</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/dreamweaver/1.htm">dreamweaver</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>Web前端开发技术描述网页设计题材,DIV+CSS布局制作,HTML+CSS网页设计期末课程大作业游景点介绍|旅游风景区|家乡介绍|等网站的设计与制作HTML期末大学生网页设计作业HTML:结构CSS:样式在操作方面上运用了html5和css3,采用了div+css结构、表单、超链接、浮动、绝对定位、相对定位、字体样式、引用视频等基础知识JavaScript:做与用户的交互行为文章目录前端学习路线</div> </li> <li><a href="/article/1835495644123459584.htm" title="Day1笔记-Python简介&标识符和关键字&输入输出" target="_blank">Day1笔记-Python简介&标识符和关键字&输入输出</a> <span class="text-muted">~在杰难逃~</span> <a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/1.htm">数据分析</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E6%8C%96%E6%8E%98/1.htm">数据挖掘</a> <div>大家好,从今天开始呢,杰哥开展一个新的专栏,当然,数据分析部分也会不定时更新的,这个新的专栏主要是讲解一些Python的基础语法和知识,帮助0基础的小伙伴入门和学习Python,感兴趣的小伙伴可以开始认真学习啦!一、Python简介【了解】1.计算机工作原理编程语言就是用来定义计算机程序的形式语言。我们通过编程语言来编写程序代码,再通过语言处理程序执行向计算机发送指令,让计算机完成对应的工作,编程</div> </li> <li><a href="/article/1835494762388484096.htm" title="【目标检测数据集】卡车数据集1073张VOC+YOLO格式" target="_blank">【目标检测数据集】卡车数据集1073张VOC+YOLO格式</a> <span class="text-muted">熬夜写代码的平头哥∰</span> <a class="tag" taget="_blank" href="/search/%E7%9B%AE%E6%A0%87%E6%A3%80%E6%B5%8B/1.htm">目标检测</a><a class="tag" taget="_blank" href="/search/YOLO/1.htm">YOLO</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a> <div>数据集格式:PascalVOC格式+YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件)图片数量(jpg文件个数):1073标注数量(xml文件个数):1073标注数量(txt文件个数):1073标注类别数:1标注类别名称:["truck"]每个类别标注的框数:truck框数=1120总框数:1120使用标注工具:labelImg标注</div> </li> <li><a href="/article/1835494131535802368.htm" title="人工智能时代,程序员如何保持核心竞争力?" target="_blank">人工智能时代,程序员如何保持核心竞争力?</a> <span class="text-muted">jmoych</span> <a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a> <div>随着AIGC(如chatgpt、midjourney、claude等)大语言模型接二连三的涌现,AI辅助编程工具日益普及,程序员的工作方式正在发生深刻变革。有人担心AI可能取代部分编程工作,也有人认为AI是提高效率的得力助手。面对这一趋势,程序员应该如何应对?是专注于某个领域深耕细作,还是广泛学习以适应快速变化的技术环境?又或者,我们是否应该将重点转向AI无法轻易替代的软技能?让我们一起探讨程序员</div> </li> <li><a href="/article/1835493138270089216.htm" title="梁文道《尽头:怎样是好的阅读和书写》 片段" target="_blank">梁文道《尽头:怎样是好的阅读和书写》 片段</a> <span class="text-muted">白夜书摘</span> <div>1、写小说的人,有时会强烈地感到一种现实的召唤,想去面对和回应现实。这时他们会觉得自己正站在时代中心,就像黑格尔说的,要把时代精神掌握在自己的小说(不是哲学)里面。但是这也很危险,当一个作家像一个时代那样书写,可能就会出现问题了。2、文字是远比语言大块而且湿冷的木头,又距离我们内心的火花稍远,不容易瞬间点燃起来,这处隙缝,给了我们回身的余地,可以再多看一下想一下设身处地一下;人类过往这最后五千年,</div> </li> <li><a href="/article/1835492869062881280.htm" title="pyecharts——绘制柱形图折线图" target="_blank">pyecharts——绘制柱形图折线图</a> <span class="text-muted">2224070247</span> <a class="tag" taget="_blank" href="/search/%E4%BF%A1%E6%81%AF%E5%8F%AF%E8%A7%86%E5%8C%96/1.htm">信息可视化</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96/1.htm">数据可视化</a> <div>一、pyecharts概述自2013年6月百度EFE(ExcellentFrontEnd)数据可视化团队研发的ECharts1.0发布到GitHub网站以来,ECharts一直备受业界权威的关注并获得广泛好评,成为目前成熟且流行的数据可视化图表工具,被应用到诸多数据可视化的开发领域。Python作为数据分析领域最受欢迎的语言,也加入ECharts的使用行列,并研发出方便Python开发者使用的数据</div> </li> <li><a href="/article/1835492740536823808.htm" title="node.js学习" target="_blank">node.js学习</a> <span class="text-muted">小猿L</span> <a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a><a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/vim/1.htm">vim</a> <div>node.js学习实操及笔记温故node.js,node.js学习实操过程及笔记~node.js学习视频node.js官网node.js中文网实操笔记githubcsdn笔记为什么学node.js可以让别人访问我们编写的网页为后续的框架学习打下基础,三大框架vuereactangular离不开node.jsnode.js是什么官网:node.js是一个开源的、跨平台的运行JavaScript的运行</div> </li> <li><a href="/article/1835492742713667584.htm" title="钢筋长度超限检测检数据集VOC+YOLO格式215张1类别" target="_blank">钢筋长度超限检测检数据集VOC+YOLO格式215张1类别</a> <span class="text-muted">futureflsl</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E9%9B%86/1.htm">数据集</a><a class="tag" taget="_blank" href="/search/YOLO/1.htm">YOLO</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a> <div>数据集格式:PascalVOC格式+YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件)图片数量(jpg文件个数):215标注数量(xml文件个数):215标注数量(txt文件个数):215标注类别数:1标注类别名称:["iron"]每个类别标注的框数:iron框数=215总框数:215使用标注工具:labelImg标注规则:对类别进</div> </li> <li><a href="/article/1835490712716668928.htm" title="第六集如何安装CentOS7.0,3分钟学会centos7安装教程" target="_blank">第六集如何安装CentOS7.0,3分钟学会centos7安装教程</a> <span class="text-muted">date分享</span> <div>从光盘引导系统按回车键继续进入引导程序安装界面,选择语言这里选择简体中文版点击继续选择桌面安装下面给系统分区选择磁盘,点击完成选择基本分区,点击加号swap分区,大小填内存的两倍在选择根分区,使用所有可用的磁盘空间选择文件系统ext4点击完成,点击开始安装设置root密码,点击完成设置普通用户和密码,点击完成整个过程持续八分钟左右根据个人配置不同,时间长短不同好,现在点击重启系统进入重启状态点击本</div> </li> <li><a href="/article/104.htm" title="springmvc 下 freemarker页面枚举的遍历输出" target="_blank">springmvc 下 freemarker页面枚举的遍历输出</a> <span class="text-muted">杨白白</span> <a class="tag" taget="_blank" href="/search/enum/1.htm">enum</a><a class="tag" taget="_blank" href="/search/freemarker/1.htm">freemarker</a> <div>spring mvc freemarker 中遍历枚举 1枚举类型有一个本地方法叫values(),这个方法可以直接返回枚举数组。所以可以利用这个遍历。 enum public enum BooleanEnum { TRUE(Boolean.TRUE, "是"), FALSE(Boolean.FALSE, "否"); </div> </li> <li><a href="/article/231.htm" title="实习简要总结" target="_blank">实习简要总结</a> <span class="text-muted">byalias</span> <a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a> <div>来白虹不知不觉中已经一个多月了,因为项目还在需求分析及项目架构阶段,自己在这段 时间都是在学习相关技术知识,现在对这段时间的工作及学习情况做一个总结: (1)工作技能方面 大体分为两个阶段,Java Web 基础阶段和Java EE阶段 1)Java Web阶段 在这个阶段,自己主要着重学习了 JSP, Servlet, JDBC, MySQL,这些知识的核心点都过 了一遍,也</div> </li> <li><a href="/article/358.htm" title="Quartz——DateIntervalTrigger触发器" target="_blank">Quartz——DateIntervalTrigger触发器</a> <span class="text-muted">eksliang</span> <a class="tag" taget="_blank" href="/search/quartz/1.htm">quartz</a> <div>转载请出自出处:http://eksliang.iteye.com/blog/2208559 一.概述 simpleTrigger 内部实现机制是通过计算间隔时间来计算下次的执行时间,这就导致他有不适合调度的定时任务。例如我们想每天的 1:00AM 执行任务,如果使用 SimpleTrigger,间隔时间就是一天。注意这里就会有一个问题,即当有 misfired 的任务并且恢复执行时,该执行时间</div> </li> <li><a href="/article/485.htm" title="Unix快捷键" target="_blank">Unix快捷键</a> <span class="text-muted">18289753290</span> <a class="tag" taget="_blank" href="/search/unix/1.htm">unix</a><a class="tag" taget="_blank" href="/search/Unix%EF%BC%9B%E5%BF%AB%E6%8D%B7%E9%94%AE%3B/1.htm">Unix;快捷键;</a> <div>复制,删除,粘贴: dd:删除光标所在的行                             &nbs</div> </li> <li><a href="/article/612.htm" title="获取Android设备屏幕的相关参数" target="_blank">获取Android设备屏幕的相关参数</a> <span class="text-muted">酷的飞上天空</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>包含屏幕的分辨率  以及 屏幕宽度的最大dp 高度最大dp   TextView text = (TextView)findViewById(R.id.text); DisplayMetrics dm = new DisplayMetrics(); text.append("getResources().ge</div> </li> <li><a href="/article/739.htm" title="要做物联网?先保护好你的数据" target="_blank">要做物联网?先保护好你的数据</a> <span class="text-muted">蓝儿唯美</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE/1.htm">数据</a> <div>根据Beecham Research的说法,那些在行业中希望利用物联网的关键领域需要提供更好的安全性。 在Beecham的物联网安全威胁图谱上,展示了那些可能产生内外部攻击并且需要通过快速发展的物联网行业加以解决的关键领域。 Beecham Research的技术主管Jon Howes说:“之所以我们目前还没有看到与物联网相关的严重安全事件,是因为目前还没有在大型客户和企业应用中进行部署,也就</div> </li> <li><a href="/article/866.htm" title="Java取模(求余)运算" target="_blank">Java取模(求余)运算</a> <span class="text-muted">随便小屋</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>        整数之间的取模求余运算很好求,但几乎没有遇到过对负数进行取模求余,直接看下面代码: /** * * @author Logic * */ public class Test { public static void main(String[] args) { // TODO A</div> </li> <li><a href="/article/993.htm" title="SQL注入介绍" target="_blank">SQL注入介绍</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/sql%E6%B3%A8%E5%85%A5/1.htm">sql注入</a> <div>二、SQL注入范例 这里我们根据用户登录页面 <form action="" > 用户名:<input type="text" name="username"><br/> 密 码:<input type="password" name="passwor</div> </li> <li><a href="/article/1120.htm" title="优雅代码风格" target="_blank">优雅代码风格</a> <span class="text-muted">aoyouzi</span> <a class="tag" taget="_blank" href="/search/%E4%BB%A3%E7%A0%81/1.htm">代码</a> <div>总结了几点关于优雅代码风格的描述: 代码简单:不隐藏设计者的意图,抽象干净利落,控制语句直截了当。 接口清晰:类型接口表现力直白,字面表达含义,API 相互呼应以增强可测试性。 依赖项少:依赖关系越少越好,依赖少证明内聚程度高,低耦合利于自动测试,便于重构。 没有重复:重复代码意味着某些概念或想法没有在代码中良好的体现,及时重构消除重复。 战术分层:代码分层清晰,隔离明确,</div> </li> <li><a href="/article/1247.htm" title="布尔数组" target="_blank">布尔数组</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%B8%83%E5%B0%94%E6%95%B0%E7%BB%84/1.htm">布尔数组</a> <div>  androi中提到了布尔数组;   布尔数组默认的是false,  并且只会打印false或者是true   布尔数组的例子;  根据字符数组创建布尔数组 char[] c = {'p','u','b','l','i','c'}; //根据字符数组的长度创建布尔数组的个数 boolean[] b = new bool</div> </li> <li><a href="/article/1374.htm" title="web.xml之welcome-file-list、error-page" target="_blank">web.xml之welcome-file-list、error-page</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/web.xml/1.htm">web.xml</a><a class="tag" taget="_blank" href="/search/servlet/1.htm">servlet</a><a class="tag" taget="_blank" href="/search/error-page/1.htm">error-page</a> <div>welcome-file-list 1.定义: <welcome-file-list> <welcome-file>login.jsp</welcome> </welcome-file-list>  2.作用:用来指定WEB应用首页名称。   error-page1.定义: <error-page&g</div> </li> <li><a href="/article/1501.htm" title="richfaces 4 fileUpload组件删除上传的文件" target="_blank">richfaces 4 fileUpload组件删除上传的文件</a> <span class="text-muted">sunjing</span> <a class="tag" taget="_blank" href="/search/clear/1.htm">clear</a><a class="tag" taget="_blank" href="/search/Richfaces+4/1.htm">Richfaces 4</a><a class="tag" taget="_blank" href="/search/fileupload/1.htm">fileupload</a> <div> 页面代码               <h:form id="fileForm">            <rich:</div> </li> <li><a href="/article/1628.htm" title="技术文章备忘" target="_blank">技术文章备忘</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/%E6%8A%80%E6%9C%AF%E6%96%87%E7%AB%A0/1.htm">技术文章</a> <div>Zookeeper http://wenku.baidu.com/view/bab171ffaef8941ea76e05b8.html http://wenku.baidu.com/link?url=8thAIwFTnPh2KL2b0p1V7XSgmF9ZEFgw4V_MkIpA9j8BX2rDQMPgK5l3wcs9oBTxeekOnm5P3BK8c6K2DWynq9nfUCkRlTt9uV</div> </li> <li><a href="/article/1755.htm" title="org.hibernate.hql.ast.QuerySyntaxException: unexpected token: on near line 1解决方案" target="_blank">org.hibernate.hql.ast.QuerySyntaxException: unexpected token: on near line 1解决方案</a> <span class="text-muted">白糖_</span> <a class="tag" taget="_blank" href="/search/Hibernate/1.htm">Hibernate</a> <div>文章摘自:http://blog.csdn.net/yangwawa19870921/article/details/7553181   在编写HQL时,可能会出现这种代码: select a.name,b.age from TableA a left join TableB b on a.id=b.id  如果这是HQL,那么这段代码就是错误的,因为HQL不支持</div> </li> <li><a href="/article/1882.htm" title="sqlserver按照字段内容进行排序" target="_blank">sqlserver按照字段内容进行排序</a> <span class="text-muted">bozch</span> <a class="tag" taget="_blank" href="/search/%E6%8C%89%E7%85%A7%E5%86%85%E5%AE%B9%E6%8E%92%E5%BA%8F/1.htm">按照内容排序</a> <div>在做项目的时候,遇到了这样的一个需求:           从数据库中取出的数据集,首先要将某个数据或者多个数据按照地段内容放到前面显示,例如:从学生表中取出姓李的放到数据集的前面;          select * fro</div> </li> <li><a href="/article/2009.htm" title="编程珠玑-第一章-位图排序" target="_blank">编程珠玑-第一章-位图排序</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E7%8F%A0%E7%8E%91/1.htm">编程珠玑</a> <div> import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.Writer; import java.util.Random; public class BitMapSearch { </div> </li> <li><a href="/article/2136.htm" title="Java关于==和equals" target="_blank">Java关于==和equals</a> <span class="text-muted">chenbowen00</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>关于==和equals概念其实很简单,一个是比较内存地址是否相同,一个比较的是值内容是否相同。虽然理解上不难,但是有时存在一些理解误区,如下情况: 1、 String a = "aaa"; a=="aaa"; ==> true 2、 new String("aaa")==new String("aaa</div> </li> <li><a href="/article/2263.htm" title="[IT与资本]软件行业需对外界投资热情保持警惕" target="_blank">[IT与资本]软件行业需对外界投资热情保持警惕</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/it/1.htm">it</a> <div>       我还是那个看法,软件行业需要增强内生动力,尽量依靠自有资金和营业收入来进行经营,避免在资本市场上经受各种不同类型的风险,为企业自主研发核心技术和产品提供稳定,温和的外部环境...       如果我们在自己尚未掌握核心技术之前,企图依靠上市来筹集资金,然后使劲往某个领域砸钱,然</div> </li> <li><a href="/article/2390.htm" title="oracle 数据块结构" target="_blank">oracle 数据块结构</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E5%9D%97/1.htm">块</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%9D%97/1.htm">数据块</a><a class="tag" taget="_blank" href="/search/%E5%9D%97%E7%BB%93%E6%9E%84/1.htm">块结构</a><a class="tag" taget="_blank" href="/search/%E8%A1%8C%E7%9B%AE%E5%BD%95/1.htm">行目录</a> <div>oracle 数据块是数据库存储的最小单位,一般为操作系统块的N倍。其结构为: 块头--〉空行--〉数据,其实际为纵行结构。 块的标准大小由初始化参数DB_BLOCK_SIZE指定。具有标准大小的块称为标准块(Standard Block)。块的大小和标准块的大小不同的块叫非标准块(Nonstandard Block)。同一数据库中,Oracle9i及以上版本支持同一数据库中同时使用标</div> </li> <li><a href="/article/2517.htm" title="github上一些觉得对自己工作有用的项目收集" target="_blank">github上一些觉得对自己工作有用的项目收集</a> <span class="text-muted">dengkane</span> <a class="tag" taget="_blank" href="/search/github/1.htm">github</a> <div>github上一些觉得对自己工作有用的项目收集 技能类 markdown语法中文说明 回到顶部 全文检索 elasticsearch bigdesk elasticsearch管理插件 回到顶部 nosql mapdb 支持亿级别map, list, 支持事务. 可考虑做为缓存使用 C</div> </li> <li><a href="/article/2644.htm" title="初二上学期难记单词二" target="_blank">初二上学期难记单词二</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/english/1.htm">english</a><a class="tag" taget="_blank" href="/search/word/1.htm">word</a> <div>dangerous 危险的 panda 熊猫 lion 狮子 elephant 象 monkey 猴子 tiger 老虎 deer 鹿 snake 蛇 rabbit 兔子 duck 鸭 horse 马 forest 森林 fall 跌倒;落下 climb 爬;攀登 finish 完成;结束 cinema 电影院;电影 seafood 海鲜;海产食品 bank 银行</div> </li> <li><a href="/article/2771.htm" title="8、mysql外键(FOREIGN KEY)的简单使用" target="_blank">8、mysql外键(FOREIGN KEY)的简单使用</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a> <div>一、基本概念 1、MySQL中“键”和“索引”的定义相同,所以外键和主键一样也是索引的一种。不同的是MySQL会自动为所有表的主键进行索引,但是外键字段必须由用户进行明确的索引。用于外键关系的字段必须在所有的参照表中进行明确地索引,InnoDB不能自动地创建索引。 2、外键可以是一对一的,一个表的记录只能与另一个表的一条记录连接,或者是一对多的,一个表的记录与另一个表的多条记录连接。 3、如</div> </li> <li><a href="/article/2898.htm" title="java循环标签 Foreach" target="_blank">java循环标签 Foreach</a> <span class="text-muted">shuizhaosi888</span> <a class="tag" taget="_blank" href="/search/%E6%A0%87%E7%AD%BE/1.htm">标签</a><a class="tag" taget="_blank" href="/search/java%E5%BE%AA%E7%8E%AF/1.htm">java循环</a><a class="tag" taget="_blank" href="/search/foreach/1.htm">foreach</a> <div>1. 简单的for循环 public static void main(String[] args) { for (int i = 1, y = i + 10; i < 5 && y < 12; i++, y = i * 2) { System.err.println("i=" + i + " y=" </div> </li> <li><a href="/article/3025.htm" title="Spring Security(05)——异常信息本地化" target="_blank">Spring Security(05)——异常信息本地化</a> <span class="text-muted">234390216</span> <a class="tag" taget="_blank" href="/search/exception/1.htm">exception</a><a class="tag" taget="_blank" href="/search/Spring+Security/1.htm">Spring Security</a><a class="tag" taget="_blank" href="/search/%E5%BC%82%E5%B8%B8%E4%BF%A1%E6%81%AF/1.htm">异常信息</a><a class="tag" taget="_blank" href="/search/%E6%9C%AC%E5%9C%B0%E5%8C%96/1.htm">本地化</a> <div>异常信息本地化          Spring Security支持将展现给终端用户看的异常信息本地化,这些信息包括认证失败、访问被拒绝等。而对于展现给开发者看的异常信息和日志信息(如配置错误)则是不能够进行本地化的,它们是以英文硬编码在Spring Security的代码中的。在Spring-Security-core-x</div> </li> <li><a href="/article/3152.htm" title="DUBBO架构服务端告警Failed to send message Response" target="_blank">DUBBO架构服务端告警Failed to send message Response</a> <span class="text-muted">javamingtingzhao</span> <a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/DUBBO/1.htm">DUBBO</a> <div> 废话不多说,警告日志如下,不知道有哪位遇到过,此异常在服务端抛出(服务器启动第一次运行会有这个警告),后续运行没问题,找了好久真心不知道哪里错了。    WARN 2015-07-18 22:31:15,272 com.alibaba.dubbo.remoting.transport.dispatcher.ChannelEventRunnable.run(84)</div> </li> <li><a href="/article/3279.htm" title="JS中Date对象中几个用法" target="_blank">JS中Date对象中几个用法</a> <span class="text-muted">leeqq</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/Date/1.htm">Date</a><a class="tag" taget="_blank" href="/search/%E6%9C%80%E5%90%8E%E4%B8%80%E5%A4%A9/1.htm">最后一天</a> <div>近来工作中遇到这样的两个需求 1. 给个Date对象,找出该时间所在月的第一天和最后一天 2. 给个Date对象,找出该时间所在周的第一天和最后一天   需求1中的找月第一天很简单,我记得api中有setDate方法可以使用 使用setDate方法前,先看看getDate var date = new Date(); console.log(date); // Sat J</div> </li> <li><a href="/article/3406.htm" title="MFC中使用ado技术操作数据库" target="_blank">MFC中使用ado技术操作数据库</a> <span class="text-muted">你不认识的休道人</span> <a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/mfc/1.htm">mfc</a> <div>1.在stdafx.h中导入ado动态链接库 #import"C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","end")2.在CTestApp文件的InitInstance()函数中domodal之前写::CoIniti</div> </li> <li><a href="/article/3533.htm" title="Android Studio加速" target="_blank">Android Studio加速</a> <span class="text-muted">rensanning</span> <a class="tag" taget="_blank" href="/search/android+studio/1.htm">android studio</a> <div>Android Studio慢、吃内存!启动时后会立即通过Gradle来sync & build工程。 (1)设置Android Studio a) 禁用插件 File -> Settings...  Plugins 去掉一些没有用的插件。 比如:Git Integration、GitHub、Google Cloud Testing、Google Cloud</div> </li> <li><a href="/article/3660.htm" title="各数据库的批量Update操作" target="_blank">各数据库的批量Update操作</a> <span class="text-muted">tomcat_oracle</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/sqlite/1.htm">sqlite</a> <div>MyBatis的update元素的用法与insert元素基本相同,因此本篇不打算重复了。本篇仅记录批量update操作的 sql语句,懂得SQL语句,那么MyBatis部分的操作就简单了。   注意:下列批量更新语句都是作为一个事务整体执行,要不全部成功,要不全部回滚。 MSSQL的SQL语句  WITH R AS(   SELECT 'John' as name, 18 as</div> </li> <li><a href="/article/3787.htm" title="html禁止清除input文本输入缓存" target="_blank">html禁止清除input文本输入缓存</a> <span class="text-muted">xp9802</span> <a class="tag" taget="_blank" href="/search/input/1.htm">input</a> <div>多数浏览器默认会缓存input的值,只有使用ctl+F5强制刷新的才可以清除缓存记录。如果不想让浏览器缓存input的值,有2种方法: 方法一: 在不想使用缓存的input中添加 autocomplete="off"; eg: <input type="text" autocomplete="off" name</div> </li> </ul> </div> </div> </div> <div> <div class="container"> <div class="indexes"> <strong>按字母分类:</strong> <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a> </div> </div> </div> <footer id="footer" class="mb30 mt30"> <div class="container"> <div class="footBglm"> <a target="_blank" href="/">首页</a> - <a target="_blank" href="/custom/about.htm">关于我们</a> - <a target="_blank" href="/search/Java/1.htm">站内搜索</a> - <a target="_blank" href="/sitemap.txt">Sitemap</a> - <a target="_blank" href="/custom/delete.htm">侵权投诉</a> </div> <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved. <!-- <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>--> </div> </div> </footer> <!-- 代码高亮 --> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script> <link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/> <script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script> </body> </html>

元素如果存在);

q  tBodies——

元素并将其放入表格;

q  deleteTHead()——删除

元素;

q  deleteRow(position)——删除指定位置上的行;

q  insertRow(position)——在rows集合中的指定位置上插入一个新行。