[英]Text box Control not getting initialized inside UserControl(.ascx page)
[英]Will this jscript run inside a .ASCX page?
它将在我的ASP.Net项目的ASCX文件中运行吗? 我似乎无法使它正常工作,只是想知道是否缺少某些特定的东西? 我是否需要包含“ runat =“ server”“?
<!--[if lte IE 6]>
<script type="text/javascript">
window.onload = function() {
var images = document.getElementById("GetQuote").getAttribute("ImageUrl");
for (var i = 0; i < images.length; i++) {
var image_png_src = images[i].src;
var image_gif_src = image_png_src.replace(".png", ".gif");
images[i].src = image_gif_src;
}
};
</script>
<![endif]-->
似乎此JavaScript函数正在尝试引用ASP.NET Web控件属性,这些属性无法从客户端进行访问。 但是,您可以引用ASP.NET输出到页面的HTML实体及其属性。
假设您的JavaScript代码是.ascx代码中的代码,请更改此行:
var images = document.getElementById("GetQuote").getAttribute("ImageUrl");
对此:
var images = document.getElementById('<%=GetQuote.ClientID%>').getAttribute("src");
这样做是插入ASP.NET为GetQuote Image
控件创建的客户端ID,以便可以从客户端引用它。 它还引用HTML img
元素( src
)的适当属性,该属性与服务器端Image
控件的ImageUrl
属性相对应。
编辑:看到TheVillageIdiot的响应(并仔细阅读了您的代码后,我最初应该做的)后,我注意到您正在尝试将images
变量用作数组。 看来您可能正在尝试匹配其ID中包含文本“ GetQuote”的多个图像元素(例如GetQuote1,GetQuote2等)。
假设您需要在客户端执行此操作,并且未使用jQuery之类的框架,请尝试以下操作:
window.onload = function()
{
// get all img elements on the page and load them into an array
var images = document.getElementsByTagName("img");
// iterate through the image array
for (var i = 0; i < images.length; i++)
{
// check that the current image's id contains "GetQuote" (case sensitive)
if (images[i].id.indexOf("GetQuote") >= 0)
{
var image_png_src = images[i].src;
var image_gif_src = image_png_src.replace(".png", ".gif");
images[i].src = image_gif_src;
}
}
};
您不需要runat =“ server”,因为这是将在客户端上运行的代码。 它应该可以工作,但是也许您遇到了问题,因为您引用的是作为asp.net控件的项目的ID? 这意味着您的ID值将不匹配。 如果是这样,您可以通过使用control.ClientID修改到JavaScript服务器端以使其匹配来解决此问题。
如果GetQuote是aspx元素,则需要用<%= GetQuote.ClientID %>
替换它,并用src
替换ImageUrl
,例如
var images = document.getElementById('<%=GetQuote.ClientID%>')
.getAttribute("src");
同样,图像应该是一个字符串,而不是字符串数组,因此您的循环也有问题。 尝试以下一项:
var image = document.getElementById('<%=GetQuote.ClientID%>').
if(images){
var src = image.GetAttribute("src");
image.SetAttribute("src",src.replace(".png", ".gif");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.