调用javascript函数for for循环代码隐藏

时间:2016-09-15 16:22:55

标签: javascript jquery asp.net vb.net

我有一个js函数可以像这样动态创建nav-tabs:

    function newTab(i) {

         for (var x = 0; x<i; x++ ){
             var nextTab = $('#tabs li').size() + 1;

             // create the tab
             $('<li><a href="#tab' + nextTab + '" data-toggle="tab">Tab ' + nextTab + '</a></li>').appendTo('#tabs');

             // create the tab content
             $('<div class="tab-pane" id="tab' + nextTab + '">tab' + nextTab + ' content</div>').appendTo('.tab-content');
         }
     };

我从我的代码后面发送i参数

 Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
    Dim dtAreas As New DataTable
    Dim i As Integer 

    dtAreas = EvaRH.GetAreas
    i = dtAreas.Rows.Count - 1

    ClientScript.RegisterStartupScript(Page.GetType(), "Tab1", "newTab('" & i & "')", True)

End Sub

这个工作正常,但是我想将标签名称设置为我在Areas数据集上的名称,所以首先我将JS函数更改为:

function newTab() {

         var nextTab = $('#tabs li').size() + 1;

         // create the tab
         $('<li><a href="#tab' + nextTab + '" data-toggle="tab">Tab ' + nextTab + '</a></li>').appendTo('#tabs');

         // create the tab content
         $('<div class="tab-pane" id="tab' + nextTab + '">tab' + nextTab + ' content</div>').appendTo('.tab-content');
 };

并尝试在后面的代码for loop上多次创建调用此函数的标签:

    For i = 0 To dtAreas.Rows.Count - 1
        ClientScript.RegisterStartupScript(Me.GetType(), "tab" & i.ToString, "newrTab()", True)
    Next

但它不起作用,并没有给我任何错误,也没有创建任何标签。 我已经尝试将js键值设置为静态,但没有奏效,也试过这两个:

Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), "tab" & i.ToString, "newTab()", True)
ScriptManager.RegisterStartupScript(Page, Me.GetType(), "tab" & i.ToString, "newTab()", True)

我还尝试将&替换为+而没有成功

1 个答案:

答案 0 :(得分:0)

客户端脚本和服务器代码不能以这种方式混合。 Javascript只能在浏览器上运行,它与后端脚本通信的唯一方式是通过AJAX(或其他一些网络)调用。

相反,让您的服务器呈现带有名称的选项卡的HTML,以及带有各自内容的选项卡窗格,然后让脚本找到这些选项卡(基于data属性)并转向他们进入动态导航。这对SEO更好,因为即使禁用了javascript,您的网站内容仍然可见。