主页 > 软件教程

偶然遇到js FireFox取不到img id

软件教程 2024-01-20

在调试 Javascript 代码的过程中,遇到一个奇怪的问题,在 ie 下可以正常取到 img 的 src 属性值,但在 FireFox、Chrome、Safari 下都获取不到。经过调试发现,通过 document.getElementById 无法获取到 img 对象,把 Javascript 放到要获取的 img 后面也不行,说明不是未加载 img 问题,看具体情况。

1、FireFox 取不到img id 的具体情况
由于程序的开发需要,img 是在后台用 C# 输出的,代码如下:

1)html 代码:

<div id="img">
<asp:Literal ID="litImg" runat="server" />
</div>

<script type="text/javascript" language="javascript">
document.getElementById("imgId").src;//获取不到 img 对象
</script>

用 document.getElementById("imgId").getAttribute("src"),也不行。

2)后台代码(C#):

protected void Page_Load(object sender, EventArgs e)
{
//输出 img
litImg.Text = "<a href="#" target="_blank"><img id="imgId" src="/images/prod.jpg" /></a>";
}

疑点:如果不是在后台输出,而是直接把 img 写到前台(<img id="imgId" src="/images/prod.jpg" />),却可以获到。

3)说明一点

把这段代码放到一个新建的 aspx 文件中,却可以获取到 img 对象和 src。由此看来,应该是原来那个 aspx 文件中的某个未知元素影响到了FireFox、Chrome、Safari 获取 img 对象,由于程序的保密性,不能公开代码(代码也很多)。

2、解决办法
既然不能直接获取到 img 本身,可以先获取它的父对象,然后通过父对象来获取它,代码如下:

<div id="img">
<asp:Literal ID="litImg" runat="server" />
</div>

<script type="text/javascript" language="javascript">
var obj = document.getElementById("img");//获取 img 的父对象
var src = obj.getElementsByTagName("img")[0].src;//获取 img 的 src
</script>


标签: js代码

电脑软硬件教程网 Copyright © 2016-2030 www.computer26.com. Some Rights Reserved.