2012-06-13 47 views
0

我想多次調用JavaScript函數。我曾嘗試這樣的
腳本如何在循環中調用JavaScript函數

function changeIt(strgr , idx) { 
    //SomeCode 
    return; 
}  

在C#

protected void btn_Click(object sender, EventArgs e) 
{ 
     string strgr = 001; 
     for(int i=0; i<3; i++) 
     { 
      base.RunScriptBottom("changeIt(" + strgr + "," + i + ");"); 
     } 
} 

但它調用腳本函數只有一次。 我能做些什麼。
至於

+3

這個C#代碼實際發送到頁面的JavaScript是什麼? C#代碼不會像你想象的那樣「調用JavaScript」。它只是建立字符串發送到瀏覽器解釋的頁面。 – David

+1

您不能從C#代碼調用Javascript。 C#代碼在服務器上運行,而JAvascript代碼在客戶端瀏覽器中運行。您只能從C#代碼生成JavaScript代碼。在生成的代碼中,如果你喜歡,你可以多次調用javascript函數。 –

回答

1

檢查ClientScriptManager.RegisterStartupScript

順便說一句,你可以寫一個js函數中循環,並從服務器端調用一次..

function changeAll(strgr , from, to) { 

    for(int i = from, i< to; i++) 
     changeIt(strgr ,i); 
} 

服務器端:

protected void btn_Click(object sender, EventArgs e) 
{ 
     string strgr = 001; 

      base.RunScriptBottom("changeAll(" + strgr + ",0,3);"); 

} 
+1

不要忘記,如果您的頁面上有'UpdatePanel',則可能需要使用'ScriptManager.RegisterStartupScript'運行JavaScript函數。 – Bastardo

0

你應該添加一個客戶端事件來做到這一點

<asp:Button Text="text" runat="server" OnClientClick="loop()" /> 
<script type="text/javascript"> 
    function loop() { 
     var strgr = 001; 
     for(var i=0; i<3; i++) 
     { 
      changeIt(strgr + "," + i); 
     } 
    } 
</script>