2011-04-28 87 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

相关问题