Javascript 控制每个TRs中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吗???除了编码决策之外。。。 尝试使用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 这是因为
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