簡體   English   中英

此jscript可以在.ASCX頁面中運行嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM