2013-05-21 30 views
0

元素的數量,我有以下的javascript代碼:的Javascript獲得在getElementsByClassName方法

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,整個頁面也會呈現。

我在做什麼錯?

+0

至少你在if語句中跳過了關閉'}'括號。然後,在本機JavaScript中沒有'getElementByTagName'方法。 – VisioN

+0

它的getElementsByTagName(複數元素) – Qurben

+0

@SegFault在你的頁面上有多個div'name1'或'name2'? –

回答

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")); 
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'; 
} 
相關問題