Javascript 控制每个TRs中TDs的显示

Javascript 控制每个TRs中TDs的显示,javascript,html,Javascript,Html,我有这样的要求 表中生成的行数由用户动态地依赖于 在一种情况下,将有一个TR,有时为4 TR,有时为8 TR 最多可以有10个TR,每个TR将有6个Tds 每个TD将包含下拉项或单选按钮, TD中每个项目的选择将触发 是否显示同一行中的下一个TD(TRs) 为了实现上述功能,我使用了Div标签,并将其隐藏起来或使其可见 我面临的挑战 1) 我无法为所有10个TR中的所有TD创建唯一id 因此,如果我在第二个TR中隐藏了一个TD的一个类Id,那么 在下一个连续TR中隐藏相应的第二个TDs 这是因为

我有这样的要求

表中生成的行数由用户动态地依赖于 在一种情况下,将有一个TR,有时为4 TR,有时为8 TR

最多可以有10个TR,每个TR将有6个Tds 每个TD将包含下拉项或单选按钮, TD中每个项目的选择将触发 是否显示同一行中的下一个TD(TRs)

为了实现上述功能,我使用了Div标签,并将其隐藏起来或使其可见

我面临的挑战

1) 我无法为所有10个TR中的所有TD创建唯一id 因此,如果我在第二个TR中隐藏了一个TD的一个类Id,那么 在下一个连续TR中隐藏相应的第二个TDs

这是因为我在FOR循环中以编程方式将其命名为类Id

你能建议我如何执行这一要求吗

2) 我们可以在运行时给出TD的Id吗???

除了编码决策之外。。。 尝试使用
class
而不是
id
,然后您可以通过JS利用
这个
选择器。

编码决策。。。
尝试使用
class
而不是
id
,然后您可以通过JS利用
这个
选择器。

下面的大纲是一个非常基本的元素创建程序。它将根据某些用户数据创建HTML文档

(函数(){
函数get\u element\u id(elem){
返回编号(元素id拆分(“”“)[1]);
}
/**
*生成向导生成器
* 
*@返回{Function}以生成具有
*/
函数生成\u guid\u生成器(){
名为_id={}的变量;
var i=0;
返回函数(ns){
命名的_id[ns]=命名的_id[ns]| 0;
返回命名的_id[ns]++;
};
}
var guid=build_guid_generator();
/**
*构建下拉列表
* 
*创建具有全局唯一标识符的HTML元素
*选项是一个对象文字,其键成为选项的文本
* 
*@param{HTMLElement}容器
*@param{Object}选项
*@param{Function}change_event-值更改时要执行的函数
*/
函数构建下拉列表(容器、选项、更改事件){
var ddl=document.createElement('select');
ddl.id='ddl_'+guid('ddl');
for(选项中的var选项)if(options.hasOwnProperty(选项)){
var opt=document.createElement('option');
opt.text=选项;
opt.value=选项[选项];
ddl.add(opt,null);
}
ddl.hide=函数(){
this.setAttribute('style','display:none;');
};
ddl.show=函数(){
this.setAttribute('style','');
};
子容器(ddl);
ddl.onchange=change\u事件;
如果(获取元素id(ddl)>0){
setAttribute('style','display:none;');
}
返回ddl;
}
/**
*建立一个单元
* 
*创建具有全局唯一标识符的HTML元素并附加到容器
* 
*@param{HTMLElement}容器
*/
功能构建单元(容器){
var td=document.createElement('td');
td.id='cell_'+guid('td');
容器.附件(td);
返回td;
}
/**
*建行
* 
*创建具有全局唯一标识符的HTML元素并附加到容器
* 
*@param{HTMLElement}容器
*/
功能构建行(容器){
var tr=document.createElement('tr');
tr.id='row_'+guid('tr');
子容器(tr);
返回tr;
}
变量用户_数据={
行:10,
单元格:6,
选项:{
“关”:假,
“测试”:“值”
}
};
功能测试数据集(数据){
var container=document.createElement('div');
container.id='container';
文件.正文.附件(容器);
var i=0;
对于(;i
下面的大纲是一个非常基本的元素创建程序。它将根据某些用户数据创建HTML文档

(函数(){
函数get\u element\u id(elem){
返回编号(元素id拆分(“”“)[1]);
}
/**
*生成向导生成器
* 
*@返回{Function}以生成具有
*/
函数生成\u guid\u生成器(){
名为_id={}的变量;
var i=0;
返回函数(ns){
命名的_id[ns]=命名的_id[ns]| 0;
返回命名的_id[ns]++;
};
}
var guid=build_guid_generator();
/**
*构建下拉列表
* 
*创建具有全局唯一标识符的HTML元素
*选项是一个对象文字,其键成为选项的文本
* 
*@param{HTMLElement}容器
*@param{Object}选项
*@param{Function}change_event-值更改时要执行的函数
*/
函数构建\删除\执行
(function(){

    function get_element_id( elem ) {
        return Number(elem.id.split('_')[1]);
    }
    /**
     * build_guid_generator
     * 
     * @returns {Function} to generate global unique identifiers with
     */
    function build_guid_generator(){
        var named_ids = {};
        var i = 0;
        return function( ns ){
            named_ids[ns] = named_ids[ns] || 0;
            return named_ids[ns]++;
        };
    }
    var guid = build_guid_generator();
    /**
     * build_drop_down
     * 
     * creates a <select> HTML Element with global unique identifier
     * options is an object literal whose keys become the text of the option 
     * 
     * @param {HTMLElement} container
     * @param {Object} options
     * @param {Function} change_event - function to execute when the value is changed
     */
    function build_drop_down( container, options, change_event ) {
        var ddl = document.createElement('select');
        ddl.id = 'ddl_' + guid('ddl');
        for( var option in options ) if ( options.hasOwnProperty( option ) ) {

            var opt = document.createElement('option');
            opt.text = option;
            opt.value = options[option];
            ddl.add(opt, null);

        }
        ddl.hide = function(){
            this.setAttribute('style','display:none;');
        };
        ddl.show = function(){
            this.setAttribute('style','');
        };
        container.appendChild( ddl );
        ddl.onchange = change_event;
        if ( get_element_id( ddl ) > 0 ) {
            ddl.setAttribute('style','display:none;');
        }
        return ddl;

    }
    /**
     * build_cell
     * 
     * creates a <td> HTML Element with global unique identifier and attaches to container
     * 
     * @param {HTMLElement} container
     */
    function build_cell ( container ) {
        var td = document.createElement('td');
        td.id = 'cell_' + guid('td');
        container.appendChild( td );
        return td;
    }
    /**
     * build_row
     * 
     * creates a <tr> HTML Element with global unique identifier and attaches to container
     * 
     * @param {HTMLElement} container
     */
    function build_row ( container ) {
        var tr = document.createElement('tr');
        tr.id = 'row_' + guid('tr');
        container.appendChild( tr );
        return tr;
    }

    var user_data = {
        rows : 10,
        cells : 6,
        options : {
            'off' : false,
            'test' : 'value'
        }
    };

    function test_data_set ( data ) {

        var container = document.createElement('div');
        container.id = 'container';
        document.body.appendChild( container );

        var i = 0;
        for ( ; i < data.rows ; i++ ) {
            var tr = build_row( container ),
                j = 0;
            for( ; j < data.cells ; j++ ) {
                var td = build_cell( tr );
                build_drop_down( td, data.options, function( event ) {
                    console.log( this.value );
                    var next_sibling = document.getElementById( 'ddl_' + ( get_element_id( this ) + 1 ) );
                    console.log( next_sibling );
                    if ( this.value === 'false' ) {
                        next_sibling.hide();
                    } else {
                        next_sibling.show();                        
                    }
                });
            }
        }

    }

    test_data_set( user_data );

})();
 Protected Sub btnNew_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnNew.Click   ''On New button or Cancel Button click
    Dim dt As DataTable
    Dim selIndex As Integer
    If btnNew.Text = "New" Then                                 ''when New button is clicked

        Try
             btnChangePwd.Enabled = False
            DGLogin.Width = 1250
            selectedindexval = True
            DGLogin.Columns.Item(4).Visible = True
            DGLogin.Columns.Item(5).Visible = True
            btnDelete.Enabled = False
            btnDeleteAll.Enabled = False
            Bind()
            dt = Session("datatab")
            selIndex = dt.Rows.Count Mod DGLogin.PageSize
            DGLogin.CurrentPageIndex = dt.Rows.Count \ DGLogin.PageSize
            DGLogin.SelectedIndex = selIndex
            DGLogin.EditItemIndex = DGLogin.SelectedIndex
            Dim dr As DataRow = dt.NewRow()
            dr("Userid") = String.Empty
            dr("UserName") = String.Empty
            dr("UserType") = String.Empty
            dr("Password") = String.Empty
            dr("EmailAlert") = False
            dr("EmailID") = String.Empty
            dr("SmsAlert") = False
            dr("PhoneNumber") = String.Empty
            dr("AlertOnWeekDays") = False
            dt.Rows.Add(dr)
            DGLogin.DataSource = dt
            DGLogin.DataBind()
            Dim ddlusType As DropDownList = DirectCast(DGLogin.Items(DGLogin.SelectedIndex).Cells(4).FindControl("ddlUserType"), DropDownList)
            ddlusType.Items.Remove("Administrator")
            ddlusType.Items.Remove("VP")
            Dim cnt As Integer = DGLogin.Items.Count
            For index As Integer = 0 To cnt - 1
                Dim lblPwd As Label = DirectCast(DGLogin.Items(index).Cells(5).FindControl("lblpwd"), Label)
                Dim lblconfirmPwd As Label = DirectCast(DGLogin.Items(index).Cells(6).FindControl("lblconfirmpwd"), Label)
                If lblPwd IsNot Nothing Then
                    If lblPwd.Text <> "" Then
                        Dim length As Integer = lblPwd.Text.Length
                        Dim strPwd As String = ""
                        For ind As Integer = 0 To length - 1
                            strPwd += "*"
                        Next
                        lblPwd.Text = strPwd
                        lblconfirmPwd.Text = strPwd
                    End If
                End If
            Next
            Dim chkemail As CheckBox = DirectCast(DGLogin.Items(DGLogin.SelectedIndex).Cells(7).FindControl("chkemailalertEdit"), CheckBox)
            Dim txtphone As TextBox = DirectCast(DGLogin.Items(DGLogin.SelectedIndex).Cells(10).FindControl("txtPhonenumber"), TextBox)
            Dim chksms As CheckBox = DirectCast(DGLogin.Items(DGLogin.SelectedIndex).Cells(9).FindControl("chkSmsalertEdit"), CheckBox)
            Dim EmailID As TextBox = DirectCast(DGLogin.Items(DGLogin.SelectedIndex).Cells(8).FindControl("txtemailid"), TextBox)
            Dim chkalertonweekdays As CheckBox = DirectCast(DGLogin.Items(DGLogin.SelectedIndex).Cells(11).FindControl("chkWeekdaysEdit"), CheckBox)
            chkalertonweekdays.Enabled = True
            chkemail.Enabled = False
            txtphone.Enabled = False
            chksms.Enabled = False
            EmailID.Enabled = False
            Dim txtusrid As TextBox = CType(DGLogin.Items(DGLogin.EditItemIndex).Cells(2).FindControl("txtuserid"), TextBox)
            txtusrid.Enabled = True
            txtusrid.Focus()
            txtusrid.Enabled = True
            Session("newrowadded") = True
            btnDelete.Enabled = False
            btnDeleteAll.Enabled = False
            btnNew.Text = "Cancel"
            btnEdit.Text = "Save"
            Session("soted") = False
            disablecheckbok()
            btnNext.Enabled = False
            btnlast.Enabled = False
            'btnfirst.Enabled = True
            'btnprevious.Enabled = True
            navigationButtouns()
        Catch ex As Exception
            UserMsgBox(ex.Message)
            WriteToLog(ex.Message)
        End Try
    ElseIf btnNew.Text = "Cancel" Then      'On click of Cancel Buttoun
        Try
            DGLogin.Width = 850
            selectedindexval = False
            DGLogin.SelectedIndex = -1
            If (Session("newrowadded") = True) Then
                If (DGLogin.EditItemIndex = 0) Then
                    DGLogin.CurrentPageIndex = 0
                End If
            End If
            btnChangePwd.Enabled = True
            Bind()
            DGLogin.Columns.Item(4).Visible = False
            DGLogin.Columns.Item(5).Visible = False
            DGLogin.EditItemIndex = -1
            DGLogin.DataBind()
            btnDelete.Enabled = True
            btnDeleteAll.Enabled = True
            btnNew.Text = "New"
            btnEdit.Text = "Edit"
            btnEdit.Enabled = True
            lblerror.Text = ""
            Session("soted") = False
            enablenavigationbuttouns()
            afterselectionchanged()
            EnableCheckBox()
        Catch ex As Exception
            WriteToLog(ex.Message)
        End Try
    End If
End Sub