2009-10-12 52 views
0

這會運行在我的ASP.Net項目中的ASCX文件中嗎? 我似乎無法得到它的工作,只是想知道是否有一些特定的東西丟失?我是否需要包含「runat =」服務器「」?這個jscript會在.ASCX頁面中運行嗎?

<!--[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]--> 
+0

是'GetQuote' aspx元素? – TheVillageIdiot 2009-10-12 13:47:45

+0

以我的經驗,我一直無法運行.ascx中的任何JavaScript。我已經成功地在UserControl上運行javascript的唯一方法是通過在代碼隱藏中注入腳本,[如此處所述](http://stackoverflow.com/questions/7046565/inject-javascript-from-asp-net -code-behind-files) – Farinha 2012-03-08 12:45:23

回答

1

您不需要runat =「server」,因爲這是在客戶端上運行的代碼。它應該可以工作,但也許你有問題,因爲你正在引用asp.net控件項目上的ID?這意味着你的ID值不匹配。如果是這樣,你可以通過使用control.ClientID重新定位到JavaScript服務器端來解決這個問題,以使它們匹配。

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創建客戶端ID用於GetQuote Image控件,以便可以從客戶端引用它。它還引用對應於服務器端Image控件的ImageUrl屬性的HTML img元素(src)的正確屬性。

編輯: 我看到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; 
     } 
    } 
}; 
+0

你幾秒鐘就打敗了我。我也在同一條線上思考。 – TheVillageIdiot 2009-10-12 13:50:51

0

如果的getQuote是一個aspx元素,那麼你需要更換它<%= GetQuote.ClientID %>ImageUrlsrc

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"); 
} 
相關問題