为什么我的元素id返回Null?

时间:2011-03-22 03:07:04

标签: javascript html null

代码段:HTML

               <div id="imgpreview" name="imgpreview">
                   <img id="srcimg" name="srcimg" />

                   <div id="resident_name"></div>
                   <div id="resident_addr"></div>
                   <div id="resident_contact"></div>
                   <div id="sale_or_rent">
                       <img id="for_sale_img" class="obtn" src="../images/ads/ForSaleSignSm.jpg" />
                       <img id="for_rent_img" class="obtn" src="../images/ads/ForRentSignSm.gif" />
                   </div>
               </div>

代码段:Javascript

function div_obj( id )
{
    if( document.layers ) return document.layers[id];

    else if( document.all ) return document.all[id];

    else if( document.getElementById ) return document.getElementById( id );

    else return null;
}

返回“imgpreview”DIV的ID,但所有其他ID,IMG和DIV都返回null。无论我是否为“srcimg”IMG定义了SRC,都会发生这种情况。任何人都知道为什么会这样?我一直盯着这看了很久,我确信一套新的眼睛会有所帮助。 TIA。

5 个答案:

答案 0 :(得分:4)

该代码必须像10年前一样 - 只需废除return document.getElementById(id);以外的所有内容。我不明白为什么在任何情况下这都行不通。

答案 1 :(得分:0)

因为“srcimg”而其余部分不在文档的顶层?为什么不直接使用document.getElementById()?

编辑:哦!因为您尝试使用反斜杠而不是正斜杠来关闭第一个图像,因此这些其他元素不在文档中。反斜杠基本上被忽略了,这意味着图像定义只是继续打开和打开。

将第二行更改为:

 <img id="srcimg" name="srcimg" />

而不是

 <img id="srcimg" name="srcimg" \>

答案 2 :(得分:0)

您真的不需要担心document.all和document.layers。 document.getElementById(id)与IE4的跨浏览器兼容

答案 3 :(得分:0)

Mea culpa。

问题结果是onload中的hide_img函数,它将“imgpreview”DIV的innerHTML设置为“”,从而删除了“imgpreview”DIV中的所有元素。

我真的很感谢代码建议,因为它们让我有了更好的风格,并评估了揭示罪魁祸首的每个引用功能。

解决。

答案 4 :(得分:0)

document.getElementById("imgpreview").children[0].src = "images/new_dis.png";

它更改"srcimg"元素src