为什么:
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'
?
答案 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);
请注意,如果返回了多个元素,则可能需要使用循环。