document.getElementsByTagName( “IMG”);与document.getElementById('testing');

时间:2011-04-28 03:36:19

标签: javascript

这是我的HTML

<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 width

但是当我使用这个脚本时

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

theImg = getW();

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

它不会输出任何内容。有什么区别,为什么第二个脚本会起作用?

谢谢!

5 个答案:

答案 0 :(得分:4)

因为getElementsByTagName()返回一组多个元素(请注意元素)。您需要使用[0]来获得第一个匹配的内容。

另一方面,id应该始终是唯一的,因此getElementById()会返回对单个元素的引用。

答案 1 :(得分:1)

gEBTN返回节点列表。对{1}进行theImg[0]

对于您的其他问题,请在nodeList的for上执行length循环。

答案 2 :(得分:1)

getElementsByTagName()返回与您提供的标记名称匹配的节点(元素)数组。因此,当您的第一个代码示例返回单个元素时,您的第二个代码示例将使用数组。

为了通过getElementsByTagName获取您正在寻找的图像,您需要进行属性搜索(例如,查找适当的名称或id标记)或者只需知道页面上的顺序。

在您的示例中,Im [0]将返回您要查找的图像。

答案 3 :(得分:0)

方法document.getElementById('testimg')返回一个id为testimg的真实元素对象。方法document.getElementsByTagName("img")将返回一个数组,其中包含标记为img的所有元素对象。

但如果有多个ID为testimg的元素,则方法document.getElementById('testimg')将返回第一个。

答案 4 :(得分:0)

替换您的代码:

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

使用此代码:

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

或使用此代码:

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

两者都是等效的,请注意.item(0),它相当于[0]

如果所需图像是第一个,则零是正确的,否则将零替换为正确的索引。