对于DOM,我一直对HTMLCollections,对象和数组感到困惑。例如…
document.getElementsByTagName("td")
和之间有什么区别$("td")
?$("#myTable")
和$("td")
是对象(jQuery的对象)。为什么console.log还会在它们旁边显示DOM元素的数组,而它们不是对象也不是数组?还请提供以下脚本的任何解释。
谢谢
[123,"abc",321,"cba"]=[123,"abc",321,"cba"]
{123:123,abc:"abc",321:321,cba:"cba"}=Object { 123=123, abc="abc", 321=321, more...}
Node= Node { ELEMENT_NODE=1, ATTRIBUTE_NODE=2, TEXT_NODE=3, more...}
document.links= HTMLCollection[a #, a #]
document.getElementById("myTable")= <table id="myTable">
document.getElementsByClassName("myRow")= HTMLCollection[tr.myRow, tr.myRow]
document.getElementsByTagName("td")= HTMLCollection[td, td, td, td]
$("#myTable")= Object[table#myTable]
$("td")= Object[td, td, td, td]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
<title>Collections?</title>
<script src="http://code.jquery.com/jquery-latest.js" type="text/javascript"></script>
<script type="text/javascript">
$(function(){
console.log('[123,"abc",321,"cba"]=',[123,"abc",321,"cba"]);
console.log('{123:123,abc:"abc",321:321,cba:"cba"}=',{123:123,abc:"abc",321:321,cba:"cba"});
console.log('Node=',Node);
console.log('document.links=',document.links);
console.log('document.getElementById("myTable")=',document.getElementById("myTable"));
console.log('document.getElementsByClassName("myRow")=',document.getElementsByClassName("myRow"))
console.log('document.getElementsByTagName("td")=',document.getElementsByTagName("td"));
console.log('$("#myTable")=',$("#myTable"));
console.log('$("td")=',$("td"));
});
</script>
</head>
<body>
<a href="#">Link1</a>
<a href="#">Link2</a>
<table id="myTable">
<tr class="myRow"><td>td11</td><td>td12</td></tr>
<tr class="myRow"><td>td21</td><td>td22</td></tr>
</table>
</body>
</html>
首先,我将解释之间的差异NodeList
和HTMLCollection
。
两个接口是 集合
DOM节点。它们在提供的方法和可以包含的节点类型方面有所不同。尽管NodeList
可以包含任何节点类型,但是HTMLCollection
假定仅包含元素节点。
一个HTMLCollection
提供相同的方法作为一个NodeList
和另外一个被调用的方法namedItem
。
当必须提供对多个节点的访问时,总是使用集合,例如,大多数选择器方法(例如getElementsByTagName
)返回多个节点或获取对所有子节点的引用(element.childNodes
)。
有关更多信息,请查看DOM4规范-Collections。
document.getElementsByTagName("td")
和之间有什么区别$("td")
?
getElementsByTagName
是DOM接口的方法。它接受标记名称作为输入并返回HTMLCollection
(请参阅DOM4规范)。
$("td")
大概是jQuery。它接受任何有效的CSS / jQuery选择器并返回jQuery对象。
标准DOM集合和jQuery选择之间的最大区别是DOM集合 通常是
实时的(尽管并非所有方法都返回实时集合),即,如果DOM的任何更改受到影响,都会反映在集合中。它们就像是DOM树上的 视图
,而jQuery选择是调用函数时DOM树的快照。
为什么console.log还会在它们旁边显示DOM元素的数组,而它们不是对象也不是数组?
jQuery对象是 类似于数组的
对象,即它们具有数值属性和一个length
属性(请记住,数组本身就是对象本身)。浏览器倾向于以特殊方式显示数组和类似数组的对象,例如[ ... , ... , ... ]
。
什么是难以捉摸的“ NodeLists”,以及如何选择一个?
请参阅我的答案的第一部分。您不能 选择 NodeList
s,它们是 选择 的 结果 。
据我所知,甚至没有办法以NodeList
编程方式创建s(即创建一个空的并稍后添加节点),它们仅由某些DOM方法/属性返回。
节点都是单个对象,有时需要一种数据结构,能够容纳多个节点。DOM 提供两种节点集合,用于容纳多个节点:NodeList和HTMLCollection。 这两种集合都属于接口规范。许多 DOM 属性和方法,返回的结果是NodeList实例或HTMLCollection实例。主要区别是,NodeList可以包含各种类型的节点,HTMLCollection只能包含 HTML 元素节点。 NodeList
问题内容: 您能否简单地解释一下Transfer对象和Domain对象之间的区别?如果您可以举一个Java示例,那就太好了。 问题答案: DTO没有任何逻辑。他们只有字段(州)。在将数据从一个层/子系统传输到另一层/子系统时使用它们 域对象可以具有逻辑(取决于您使用的是域驱动设计还是贫乏的数据模型),并且它们通常与数据库结构相关。 如果使用贫乏的数据模型(即您的域对象没有任何逻辑),则DTO和域对
问题内容: 声明 Array 和 Dictionary的 更好方法,我都使用了: 对我来说,编码方面的速度非常快,但实际上两者在编译器和性能方面有何不同,我们应该遵循哪一个? 问题答案: 从Swift上的iOS开发者库… Swift数组的类型完整写为Array ,其中Element是允许数组存储的值的类型。您还可以将简写形式的数组类型写为[Element]。尽管 这两种形式在功能上是相同的 ,但
主要内容:1. 属性,2. 方法对象指定有序节点集合的抽象。 中的项目可通过整数索引访问,它的索引从开始。 1. 属性 下表列出了对象的属性 - 属性 类型 描述 length 它给出了节点列表中的节点数。 2. 方法 以下是对象的唯一方法。 序号 方法 描述 1 item() 它返回集合中的索引项。 如果索引大于或等于列表中的节点数,则返回。
问题内容: 我是Kotlin的新手,最近将一个简单文件从Java转换为Kotlin。我想知道为什么Android转换器将我的java类更改为Kotlin对象。 Java: 转换的Kotlin: 为什么不呢? 任何帮助将不胜感激谢谢。 问题答案: Kotlin对象就像一个无法实例化的类,因此必须按名称进行调用。(本身是静态类) android转换器看到您的类仅包含静态方法,因此将其转换为Kotlin
问题内容: Java中的List和Array有什么区别?或Array和Vector之间的区别! 问题答案: 通常(在Java中),数组是一种数据结构,通常由存储对象集合的顺序存储器组成。 是Java中的接口,这意味着它可能具有多种实现。这些实现之一是,这是一个使用数组作为数据结构来实现接口行为的类。 还有许多其他实现该接口的类。查看它们的一种简单方法是查看以下位置的Javadoc :http :