Javascript 如何检索属性';使用nodeName属性的名称?

Javascript 如何检索属性';使用nodeName属性的名称?,javascript,Javascript,您可以使用节点名轻松检索元素的标记名,如下所示: var-atnode=document.getElementById(“链接测试”); 警报(atnode.nodeName) const atnode=document.getElementById(“链接测试”); 常量节点=[]; 常量值=[]; for(设att,i=0,atts=atnode.attributes,n=atts.length;i

您可以使用
节点名
轻松检索元素的标记名,如下所示:

var-atnode=document.getElementById(“链接测试”);
警报(atnode.nodeName)
const atnode=document.getElementById(“链接测试”);
常量节点=[];
常量值=[];
for(设att,i=0,atts=atnode.attributes,n=atts.length;i

您可以使用节点上的
getAttributeNames()
获取属性列表。在您的示例中,您可以这样做:

atnode.getAttributeNames()
这将返回
[“href”,“id”]


然后,您可以使用
getAttribute()
在列表中循环,以获取元素属性的值。

如果我理解正确,您只需要使用该方法

下面是一个例子:

const examplelement=document.getElementsByTagName(“示例”)[0];
log(examplelement.getAttributeNames())

我以前从未听说过这种方法。但是,我可以问您一些其他问题吗?为什么这个方法
getAttributeNames()
对存储标记名集合的变量不起作用?例如,
var tagcollect=document.getElementsByTagName(“a”)
。现在,
tagcollect
是对
a
元素的引用,那么为什么
tagcollect.getAttributeNames()
不返回这些存储的
a
元素中作为引用的所有属性的名称?因为您需要在单个节点上调用它。因此,您需要在集合中循环,然后使用
getAttributeNames()
调用循环中的单个项。您使用的是我尚未研究过的内容。我以前没有研究过
push
方法和
attributes
方法。另外,我很好奇,为什么循环外部的变量是用
const
创建的,而内部的
att
是用
let
创建的?另外,
atts
是全局变量吗?为什么不定义它?Push方法与数组一起工作,你传递一个参数,它将它推送到给定的数组,当你使用常量变量时,你不能更改它(或对某些数据类型的引用),我使用了for循环中的let,因为正如你看到的,我更改了变量,除了atts和n,它们也可以是常量,但在这种情况下,这并不重要。没有atts不是一个全局变量,自ES6(使用let和const)以来,有一种称为block scope的东西@ihateSelfModeration那么您什么时候定义了
atts
?你从未在任何地方定义过它,所以它不是一个全局变量吗?@Ihateselfmoderation在for循环的开头,你可以看到有一个let关键字,然后我定义了4个变量:att、i、atts和n。哦,我现在明白了。我猜你不能用var做这件事,对吧?您也可以使用var创建多个这样的变量吗?