[英]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.