我有一个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)
我还尝试将&
替换为+
而没有成功
答案 0 :(得分:0)
客户端脚本和服务器代码不能以这种方式混合。 Javascript只能在浏览器上运行,它与后端脚本通信的唯一方式是通过AJAX(或其他一些网络)调用。
相反,让您的服务器呈现带有名称的选项卡的HTML,以及带有各自内容的选项卡窗格,然后让脚本找到这些选项卡(基于data
属性)并转向他们进入动态导航。这对SEO更好,因为即使禁用了javascript,您的网站内容仍然可见。