2015-10-11 30 views
2

我在包含图片的ASP.net中创建了一个简单的Datalist。 当我点击图片时,我想将它显示在一个小的分隔窗口中,如弹出窗口。 我添加了一个Loader图像在选定的图像之前显示它。 你可以看到下面的弹出窗口中的asp.net代码:var imgLoader = document.getElementById(“imgLoader”);始终为空

<div id="divImage" > 
<table style="height: 100%; width: 100%"> 
    <tr> 
     <td valign="middle" align="center" colspan = "3" style  ="height:500px;"> 
      <img id="imgLoader" runat="server" alt="" 
      src="~/Images/loader.gif" /> 
      <img id="imgFull" alt="" src="" 
      style="display: none; 
      height: 500px;width: 600px" /> 
     </td> 

在JavaScript代码我得到的变量(imgLoader = NULL)。

var imgLoader = document.getElementById("imgLoader"); 

你知道我为什么得到NULL结果吗?

的LoadDiv功能:

function LoadDiv(url, lnk) { 
      var img = new Image(); 
      var bcgDiv = document.getElementById("divBackground"); 
      var imgDiv = document.getElementById("divImage"); 
      var imgFull = document.getElementById("imgFull"); 
      var imgLoader = document.getElementById("imgLoader"); 
      var dl = document.getElementById("<%=DataList1.ClientID%>"); 
      var imgs = dl.getElementsByTagName("img"); 

      CurrentPage = GetImageIndex(lnk.parentNode) + 1; 
      imgLoader.style.display = "block"; 
      img.onload = function() { 
       imgFull.src = img.src; 
       imgFull.style.display = "block"; 
       imgLoader.style.display = "none"; 
      }; 
      img.src = url; 
      Prepare_Pager(imgs.length); 
      var width = document.body.clientWidth; 
      if (document.body.clientHeight > document.body.scrollHeight) { 
       bcgDiv.style.height = document.body.clientHeight + "px"; 
      } 
      else { 
       bcgDiv.style.height = document.body.scrollHeight + "px"; 
      } 

      imgDiv.style.left = (width - 650)/2 + "px"; 
      imgDiv.style.top = "20px"; 
      bcgDiv.style.width = "100%"; 

      bcgDiv.style.display = "block"; 
      imgDiv.style.display = "block"; 
      return false; 
     } 
+0

你什么时候运行脚本?你确定img之前存在它吗? –

+0

它是LoadDiv函数 – Hadil

+0

请同时发布LoadDiv函数 –

回答

2

由于<img>标有runat="server",这意味着该id将在内部使用是Asp.net引用该组件,而实际的元件ID(在客户端 - 方)会有所不同。

试试这个:

var imgLoader = document.getElementById("<%=imgLoader.ClientID%>"); 

另外,如果你在服务器端与此组件做什么,你可以简单地忽略runat="server"

+0

哦是的,就是这样..感谢您的帮助:) – Hadil