代码段: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。
答案 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