Javascript获取getElementsByClassName中的元素数量

时间:2013-05-21 11:28:37

标签: javascript

我有以下javascript代码:

b = document.getElementsByClassName('name1');
c = document.getElementsByClassName('name2');
if (b.length != 0) {
    document.getElementByTagName('body')[0].innerHTML = b[0].innerHTML 
else if (c.length != 0) {
    document.getElementByTagName('body')[0].innerHTML = c[0].innerHTML
}
else document.getElementByTagName('body')[0].innerHTML = 'error';

但我没有得到想要的渲染。即使存在具有类名name1和name2的div,整个页面也会呈现。

我做错了什么?

2 个答案:

答案 0 :(得分:3)

  1. 您跳过}声明中的结束if括号;
  2. 原生JavaScript中没有getElementByTagName方法;
  3. 您最好使用document.body
  4. 这是一个更正确的代码:

    var b = document.getElementsByClassName("name1"),
        c = document.getElementsByClassName("name2");
    
    if (b.length > 0) {
        document.body.innerHTML = b[0].innerHTML;
    } else if (c.length > 0) {
        document.body.innerHTML = c[0].innerHTML;
    } else {
        document.body.innerHTML = "error";
    }
    

    此外,我不建议您更改.innerHTML属性,使用.appendChild()方法效率更高,即:

    document.body.appendChild(document.createTextNode("error"));
    

答案 1 :(得分:1)

您使用的是getElementByTagName而不是getElementsByTagName。这是更新的脚本。

b = document.getElementsByClassName('name1');
c = document.getElementsByClassName('name2');
if (b.length != 0) {
    document.getElementsByTagName('body')[0].innerHTML = b[0].innerHTML;
else if (c.length != 0) {
    document.getElementsByTagName('body')[0].innerHTML = c[0].innerHTML;
    }
    else document.getElementsByTagName('body')[0].innerHTML = 'error';
}