我使用的是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" />
答案 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);