0

这会在我的 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]-->
4

3 回答 3

3

此 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 为 GetQuoteImage控件创建的客户端 ID,以便可以从客户端引用它。它还引用了与服务器端控件的属性相对应的 HTMLimg元素 ( src)的正确属性。ImageUrlImage

编辑:在看到 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;
        }
    }
};
于 2009-10-12T13:49:22.957 回答
1

您不需要 runat="server" 因为这是将在客户端上运行的代码。它应该可以工作,但也许您遇到了问题,因为您在 asp.net 控件的项目上引用了 ID?这意味着您的 ID 值将不匹配。如果是这样,您可以通过将 control.ClientID 重新放入 JavaScript 服务器端以使它们匹配来解决此问题。

于 2009-10-12T13:47:40.480 回答
0

如果GetQuote是一个 aspx 元素,那么您需要将其替换<%= GetQuote.ClientID %>为likeImageUrlsrc

 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");
}
于 2009-10-12T13:57:04.703 回答