con.Open();
SqlCommand Cmd = new SqlCommand("select length=DATALENGTH(small_pic),product_ID from tab_product_info ", con);
SqlDataReader Sdr = Cmd.ExecuteReader();
while (Sdr.Read())
{
if (Sdr["length"].ToString() == "" || Sdr["length"] == null)
{
Page.RegisterStartupScript("page" + Sdr["product_ID"].ToString(), "<script>document.getElementById('img" + Sdr["product_ID"].ToString().Trim() + "').src='images/showimg.gif'</script>");
}
}
Sdr.Close();
con.Close();
为什么这样注册脚本后允许可以正常,但老提示document.getElementById(..)为空或不是对象....
SqlCommand Cmd = new SqlCommand("select length=DATALENGTH(small_pic),product_ID from tab_product_info ", con);
SqlDataReader Sdr = Cmd.ExecuteReader();
while (Sdr.Read())
{
if (Sdr["length"].ToString() == "" || Sdr["length"] == null)
{
Page.RegisterStartupScript("page" + Sdr["product_ID"].ToString(), "<script>document.getElementById('img" + Sdr["product_ID"].ToString().Trim() + "').src='images/showimg.gif'</script>");
}
}
Sdr.Close();
con.Close();
为什么这样注册脚本后允许可以正常,但老提示document.getElementById(..)为空或不是对象....
你的这个名字是变化的,不存在你要的对象,错误提示已经很清楚了.
<asp:DataList ID="DataList1" runat="server" RepeatColumns="4" Width="679px">
<ItemTemplate>
<table style="width: 150px; height:140px" border=0>
<tr align="left">
<td style="width: 100px;height:100px" align="center"><a href="show.aspx?product_ID=<%# DataBinder.Eval(Container.DataItem,"product_ID") %>" target="_blank"><img border="0"id='img<%# DataBinder.Eval(Container.DataItem,"product_ID") %>' width="100px" height="100px" src='chuli.aspx?flag=samll&imgid=<%# DataBinder.Eval(Container.DataItem,"product_ID") %>'/></a>
</td>
</tr>
<tr>
<td style="width: 150px;height:40px" align="left"> <a href="show.aspx?product_ID=<%# DataBinder.Eval(Container.DataItem,"product_ID") %> " target="_blank"><%# DataBinder.Eval(Container.DataItem, "product_name")%></a>
</td>
</tr>
</table>
</ItemTemplate>
</asp:DataList>
我是想动态改变IMG的图片地址
改为
<acript defer="defer">
试试
楼主,你的问题可能是因为这段js执行时,相关的对象还没有解析造成的,加上defer="defer",意思就是这段js等页面载入完成了再执行,你试试看
'img" + Sdr["product_ID"].ToString().Trim() + "' 还没有创建出来吧。
img后面多了个空格
这个时候控件应该是已经加载完成了可能是编译后的ID名不是'img" + Sdr["product_ID"].ToString().Trim() + "'格式吧
比如有模板、用户控件内的情况下,服务端的ID在编译成客户端后是会在前面加入模板/用户控件的前缀编号的
看是否id错误,不匹配