繁体   English   中英

在for循环代码中调用javascript函数

[英]Call javascript function in for loop code-behind

我有一个js函数,可以动态创建导航标签,如下所示:

    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)

我也尝试过用+替换&且不成功

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM