我在页面的源代码中有这段代码:
<a data-toggle="dropdown" class="user" href="#">Tom</a>
我尝试使用以下代码解析字符串“Tom”:
var username = document.getElementsByClassName("user").innerHTML;
alert(username);
但是用户名变量未定义,代码有什么问题? 我不想使用jQuery。
答案 0 :(得分:4)
查看DOM方法的名称: getElement * s * ByClassName 。它是复数,因此可以,并且很可能会返回超过1个元素
这些元素将存储在类似于object(NodeList
的实例)的数组中。
var usernames = document.getElementsByClassName('user');
var first = usernames[0];
但实际上,getElementsByClassName
不受支持,最好使用querySelectorAll
(比较the querySelector
support支持the getElementsByClassName
支持,尤其是在IE中<) / p>
var usernames = document.querySelectorAll('.user');
var first = usernames[0];
此外,使用这些选择器,您可以绕过必须查询整个DOM:
var username = document.querySelector('.user');//gets just one
注意:
有关the NodeList
class on MDN here的详情
请注意,某些版本的FireFox将返回未被称为NodeList
的对象,而是Mozilla自己的DOM API超集,它扩展了NodeList
构造函数。我不记得那个叫做ATM的对象是什么,但是一旦我记得,我会再次联系到
答案 1 :(得分:1)
与document.getElementById
不同,document.getElementsByClassName
方法返回具有指定类的元素数组。在这种情况下,您可能想要选择第一个。
var username = document.getElementsByClassName("user")[0].innerHTML;
alert(username);
您错过了[0]
。
答案 2 :(得分:1)
你错过了[0]来获得第一个元素。
var username = document.getElementsByClassName("user")[0].innerHTML;