2011-04-28 51 views
1

這裏是我的htmldocument.getElementsByTagName(「img」);與document.getElementById('testimg');

<a href="index.php"><img id="testimg" src="images/logo.png"/></a> 

這裏是我的javascript

function getW(){ 
    var theImg = document.getElementById('testimg'); 
    return theImg; 
} 

theImg = getW(); 

if (theImg.width > 119){ 
    document.write(theImg.width); 
} 

現在,當我使用這個腳本出來放IMG寬度

然而,當我使用這個腳本

function getW(){ 
    var theImg = document.getElementsByTagName("img"); 
    return theImg; 
} 

theImg = getW(); 

if (theImg.width > 119){ 
    document.write(theImg.width); 
} 

它不輸出任何東西。有什麼區別,爲什麼這第二個腳本工作?

謝謝!

回答

4

因爲getElementsByTagName()返回一組多個元素(注意元素)。您需要使用[0]才能獲得第一個匹配。

另一方面,id應該始終是唯一的,因此getElementById()返回對單個元素的引用。

+0

如果我想返回頁面上所有的img寬度,該怎麼辦? – Chris 2011-04-28 03:38:24

+0

@Chris然後,您將對'getElementsByTagName()'返回的集合使用循環。 – alex 2011-04-28 03:39:15

1

gEBTN返回一個節點列表。爲第一個元素做theImg[0]

對於您的其他問題,請在nodeList的length上執行for循環。

1

getElementsByTagName()返回與您提供的標記名稱相匹配的節點(元素)數組。所以,當你的第一個代碼示例返回一個元素時,你的第二個代碼將使用一個數組。

爲了得到你所通過的getElementsByTagName尋找的形象,你要麼需要需要做的屬性的搜索(找到一個合適的名稱或ID標籤,例如)或簡單地知道它在頁面上的順序。

在您的示例中,Img [0]將返回您正在查找的圖像。

+0

我想技術上它返回一個對象,而不是一個數組。 – alex 2011-04-28 03:41:21

+0

它返回一個NodeList對象。 – BraedenP 2011-04-28 03:43:26

+0

就是這樣一個人:) – alex 2011-04-28 03:44:59

0

方法document.getElementById('testimg')返回一個真實的元素對象,其ID爲testimg。方法document.getElementsByTagName("img")將返回一個包含標籤爲img的所有元素對象的數組。

但是,如果有多個元素的ID爲testimg,則方法document.getElementById('testimg')將返回第一個元素。

+0

我不認爲你最後一句話是正確的。 – alex 2011-04-28 03:45:18

+0

謝謝。我的錯。 – HarryAki 2011-04-28 03:57:34

0

替換您的代碼:

var theImg = document.getElementsByTagName("img"); 

與此代碼:

var theImg = document.getElementsByTagName("img").item(0); 

或與此代碼:

var theImg = document.getElementsByTagName("img")[0]; 

兩者是等價的,要注意.item(0),它相當於[0]

如果所需的圖像是第一個,則零是正確的,否則將零替換爲正確的索引。

+0

最後兩個代碼塊完全一樣。 – praseodym 2012-11-10 23:08:31

相關問題