TypeError:document.getElementsByTagName(...)。className未定义

时间:2015-11-27 16:25:09

标签: javascript

我一直在

  

TypeError:document.getElementsByTagName(...)。className未定义

与此相关的是什么,我真的不明白。

function test(){
    if ( document.getElementsByTagName("body").className.match(/(?:^|\s)test(?!\S)/) ){
        document.getElementsByTagName("body").className += " test";
        alert("test");
    }
}

document.onload = test();

2 个答案:

答案 0 :(得分:2)

请注意,它是getElementsByTagName,而不是getElementByTagName - 它是复数。它返回一个元素列表。

将类添加到该列表中的第一个元素:

if ( document.getElementsByTagName("body")[0].className.match(/(?:^|\s)test(?!\S)/) ){
    document.getElementsByTagName("body")[0].className += " test";
    alert("test");
}

答案 1 :(得分:1)

getElementsByTagName会返回psecified标记元素的数组。例如,如果您的网页上有100500个div元素getElementsByTagName将返回一个长度为100500的数组,它将包含您的所有div元素。当然,array没有财产className

如果您只想选择一个特定元素,可以为其指定id属性,并调用getElementById返回单个元素

如果使用getElementsByTagName,您可以尝试获取元素数组,从中选择第一项(零索引),然后阅读它的' className属性