0

为什么:

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

返回[ul.errors]萤火虫

然而:

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

返回'undefined'.

为什么不返回'errors'

4

4 回答 4

2

getElementsByTagName返回一个元素列表。

var isError = document.getElementById('companyName-element').getElementsByTagName('ul')[0].className;
于 2012-08-14T10:33:31.150 回答
0

我的第一个想法是 getElementsByTagName 的结果是一个数组,所以你需要:

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

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

然而,这没有被研究或测试。

于 2012-08-14T10:34:04.567 回答
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);

因为 document.getElementsByTagName("ul") 将给出一个节点列表

于 2012-08-14T10:34:38.840 回答
0

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

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

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

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

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

于 2012-08-14T10:35:13.100 回答