0

我有以下 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,整个页面也会呈现。

我究竟做错了什么?

4

2 回答 2

3
  1. 您跳过了语句中的右}括号;if
  2. 本机 JavaScript 中没有getElementByTagName方法;
  3. 你最好document.body改用。

这是更正确的代码:

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"));
于 2013-05-21T11:33:23.303 回答
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';
}
于 2013-05-21T11:34:32.167 回答