使用document.getelementbyID中的动态ID

时间:2011-09-15 14:24:58

标签: asp.net asp.net-4.0

我使用的是asp.net 4.0

我有一个checklistbox和一个复选框。我必须在选中复选框时选中checklisbox上的所有复选框。我正在编写以下代码。

function Select(CheckBox, ChecklistBoxID) {
    var TargetBaseControl = document.getElementById('<%= chkAction.ClientID%>');
    var Inputs = TargetBaseControl.getElementsByTagName("input");
    for (var n = 0; n < Inputs.length; ++n)
        Inputs[n].checked = CheckBox.checked;
}

我的查询是,在上面的函数中,我传递了checklistbox的第二个参数,如何在下面的代码行中传递这个id。

var TargetBaseControl = document.getElementById('<%= chkAction.ClientID%>');

EDIT 我还有两个checklistbox,所以我不想;想要对controlID进行硬编码。我在考虑将ID作为参数传递。因此代码将变得可重用...

 <asp:CheckBox ID="chkact" onclick="javascript:Select(this, 'chkAction');"  ClientIDMode="Static" runat="server" Text="Select All" />

2 个答案:

答案 0 :(得分:0)

我认为你的意思是这样做:

var TargetBaseControl = document.getElementById(ChecklistBoxID);

其中ChecklistBoxID是包含所有输入元素的控件的id。

由于您将ID作为字符串传递,因此可以正常工作;就像你在这里做的那样,例如:

<asp:CheckBox ID="chkact" onclick="javascript:Select(this, 'chkAction');"  ClientIDMode="Static" runat="server" Text="Select All" />

更新:似乎在MasterPage中定义了Select函数;因此,相应内容页面背后的代码将需要吐出javascript:

if (!IsPostBack)
{
     chkact.Attributes.Add("onclick","Select(this,'"+listbox.ClientID+"');");
}

答案 1 :(得分:0)

以下是修复。

checklboxlist需要初始化属性ClientIDMode =“Static”。最后,我可以使用下面的代码确定ID。

var TargetBaseControl = document.getElementById(ID);