javascript解析不起作用的文档。GetElementsByCassName

javascript解析不起作用的文档。GetElementsByCassName,javascript,dom,Javascript,Dom,我在页面的源代码中有以下代码: <a data-toggle="dropdown" class="user" href="#">Tom</a> 但是username变量未定义,代码有什么问题? 我不想使用jQuery。与document.getElementById不同,document.getElementsByClassName方法返回具有指定类的元素数组。在这种情况下,您可能需要选择其中的第一个 var username = document.getElement

我在页面的源代码中有以下代码:

<a data-toggle="dropdown" class="user" href="#">Tom</a>
但是username变量未定义,代码有什么问题?
我不想使用jQuery。

document.getElementById
不同,
document.getElementsByClassName
方法返回具有指定类的元素数组。在这种情况下,您可能需要选择其中的第一个

var username = document.getElementsByClassName("user")[0].innerHTML;
alert(username);

您错过了
[0]

文档不同。getElementById
文档。getElementsByClassName
方法返回具有指定类的元素数组。在这种情况下,您可能需要选择其中的第一个

var username = document.getElementsByClassName("user")[0].innerHTML;
alert(username);

您错过了
[0]

您刚刚错过了获取第一个元素的[0]

var username = document.getElementsByClassName("user")[0].innerHTML;

您刚刚错过了获取第一个元素的[0]

var username = document.getElementsByClassName("user")[0].innerHTML;

查看DOM方法的名称:getElement*s*ByClassName。它是复数形式,因此可以而且很可能会返回多个元素。
这些元素将存储在类似数组的对象中(节点列表的实例)

但实际上,
getElementsByClassName
并没有得到很好的支持,最好使用
querySelectorAll
(与的支持进行比较,尤其是在IE中)

此外,使用这些选择器,您可以避免查询整个DOM:

var username = document.querySelector('.user');//gets just one
注:
有关
的详细信息
请注意,FireFox的某些版本将返回一个对象,该对象不是名为
NodeList
,而是Mozilla自己的DOM API超集,它扩展了
NodeList
构造函数。我记不起那个对象叫什么ATM,但我会在记住DOM方法的名称后再联系的:getElement*s*ByClassName。它是复数形式,因此可以而且很可能会返回多个元素。
这些元素将存储在类似数组的对象中(节点列表的实例)

但实际上,
getElementsByClassName
并没有得到很好的支持,最好使用
querySelectorAll
(与的支持进行比较,尤其是在IE中)

此外,使用这些选择器,您可以避免查询整个DOM:

var username = document.querySelector('.user');//gets just one
注:
有关
的详细信息
请注意,FireFox的某些版本将返回一个对象,该对象不是名为
NodeList
,而是Mozilla自己的DOM API超集,它扩展了
NodeList
构造函数。我记不起那个物体叫什么ATM,但我记得我不想用jQ来做这样的事情后,我会再联系的。。。这表明你愿意付出努力,自己学习使用JS和(笨重的)DOM API,而不是依赖一个经常被滥用的工具+1,因为你不想使用jQ来做这样的事情。。。这表明您愿意付出努力,自己学习使用JS和(笨重的)DOM API,而不是依赖经常被滥用的工具