javascript获取className

时间:2012-08-14 10:30:41

标签: javascript

为什么:

var isError = document.getElementById('companyName-element').getElementsByTagName('ul');
console.log(isError);

在firebug中返回[ul.errors]

,而:

var isError = document.getElementById('companyName-element').getElementsByTagName('ul').className;
console.log(isError);

返回'undefined'.

为什么它会返回'errors'

4 个答案:

答案 0 :(得分:2)

getElementsByTagName返回元素列表。

var isError = document.getElementById('companyName-element').getElementsByTagName('ul')[0].className;

答案 1 :(得分:0)

我首先想到的是getElementsByTagName的结果是一个数组,所以你需要:

....getElementById('companyName-element').getElementsByTagName('ul')[0].className;
console.log(isError);

获取数组中的第一个元素。

然而,这并未经过研究或测试。

答案 2 :(得分:0)

   var isError = document.getElementById('companyName-element').getElementsByTagName('ul').className;
    console.log(isError);

这应该替换为

var isError = document.getElementById('companyName-element').getElementsByTagName('ul')[0].className;
    console.log(isError);

as document.getElementsByTagName(“ul”)将给出一个节点列表

答案 3 :(得分:0)

getElementsByTagName()返回元素的(节点)列表(MDN docu),即使只有一个匹配也没有匹配。

在您的第一个代码示例中,该列表包含一个元素,即firebug向您显示的内容。

在第二个示例中,您尝试访问列表(不是元素!)的属性className,该属性不存在,从而返回undefined。如果要访问该元素的className,请使用以下命令:

var isError = document.getElementById('companyName-element').getElementsByTagName('ul')[0].className;
console.log(isError);

请注意,如果返回了多个元素,则可能需要使用循环。