Javascript DOM元素的对象表示法
在下面的示例中,DOM元素有一个类似数组的对象,有一点我不清楚Javascript DOM元素的对象表示法,javascript,dom,Javascript,Dom,在下面的示例中,DOM元素有一个类似数组的对象,有一点我不清楚 <!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="Conten
<!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=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript">
window.onload = function(){
for(var prop in document.links){
alert(prop); // It does not alert foo!
}
}
</script>
</head>
<body>
<a name="foo" href="#">foo</a>
</body>
</html>
无标题文件
window.onload=函数(){
for(document.links中的var prop){
警惕(道具);//它不警惕foo!
}
}
理论上,访问prop的对象表示法类似于:obj.prop
。
在object array like中,对象的元素必须有数字表示法:obj[0]
,以及obj.length
警报发出:
0
,length
,项
,namedItem
。前两个来自对象数组理论,另两个可用于访问道具
最后,这个链接可以像
document.links[0]
和document.links.foo
一样找到。文档中没有foo
道具。链接
。为什么?谢谢。您正在将DOM元素本身传递给“alert()”。传递“name”属性怎么样
for(var prop in document.links){
alert(prop.name);
}
现在,在这样的节点列表中进行迭代是个糟糕的主意:
for (var i = 0; i < document.links.length; ++i)
alert(document.links[i].name);
for(变量i=0;i
如果需要节点的文本内容,可以尝试以下操作:
for (var i = 0; i < document.links.length; ++i)
alert(document.links[i].innerHTML);
for(变量i=0;i
您还可以找到它的子文本节点并提取它们的值
请注意,“links”对象还将包括
标记(如果有)。之所以document.links.foo
不可用,是因为您使用的是name
而不是id
。如果将标记更改为:
<a id="foo" href="#">foo</a>
document.links是一个HTMLCollection,而不是数组,并且没有与数组相同的方法,这一事实可以解释您的一些困惑。My
alert
给出的是:0,length,item,namedItem。0表示第一个链接标记,长度表示给定对象数组的长度,这两个也是访问该标记的支柱。没有foo
prop可以让我的JS功能逻辑正常工作:)而且它不是一个数组……))不,没有“foo”属性,因为根本没有。“links”对象是一个节点列表,它包含
元素DOM节点的列表。在您的示例中,属性“name”包含值“foo”。好的,谢谢您的回答,但请看以下内容:document.links.foo
是链接(DOM对象),不确定document.links.name.foo
是否是..我认为这是因为NodeList对象的语义。@Pointyfor。。。在
中迭代键而不是值。\尽管如此,document.links
本身没有foo
prop,即使link标记中有id
属性。通过它迭代,将不会发出警报foo`。。。
window.onload = function(){
window.alert(document.links.foo.innerHTML);
}