![](/img/trans.png)
[英]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.