返回首页
当前位置: 主页 > 编程语言 > Javascript教程 >

偶然遇到js FireFox取不到img id

时间:2017-03-31 15:33来源:电脑教程学习网 www.etwiki.cn 编辑:admin

在调试 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>

  如果日后找到具体原因,再完善本文,毕竟开发是一个不断相互学习交流的过程。

------分隔线----------------------------
标签(Tag):正则表达式 Js
------分隔线----------------------------
推荐内容
猜你感兴趣