复选框列表中javascript中的问题

复选框列表中javascript中的问题,javascript,Javascript,这是我的Javascript,它的行为就像一个单选按钮。其中,用户一次只能选择一个选项(例如:如果他选择item1并选择item2,则item1将被取消选择,如果他再次单击item2,则他将被取消选择为selected item2)。这使得用户可以选择任何一个项目或取消选择要选择的项目 此条件工作正常 问题 当用户再次单击该按钮时,我在页面中有一个按钮,如果用户选择了任何项目[例如,在单击按钮之前选择了项目1。然后在单击按钮之后。现在,如果我们在复选框列表中选择了任何项目,则当我在复选框列表中选

这是我的Javascript,它的行为就像一个单选按钮。其中,用户一次只能选择一个选项(例如:如果他选择item1并选择item2,则item1将被取消选择,如果他再次单击item2,则他将被取消选择为selected item2)。这使得用户可以选择任何一个项目或取消选择要选择的项目

此条件工作正常
问题 当用户再次单击该按钮时,我在页面中有一个按钮,如果用户选择了任何项目[例如,在单击按钮之前选择了项目1。然后在单击按钮之后。现在,如果我们在复选框列表中选择了任何项目,则当我在复选框列表中选择其他项目时,最初选择的项目1不会被取消选择

下面是我的代码

var objChkd;

function HandleOnCheck() 
{
   var chkLst = document.getElementById('CheckBoxList1'); 
   if(objChkd && objChkd.checked)
          objChkd.checked=false;objChkd = event.srcElement; 
}
并将客户端事件注册到页面上的“CheckBoxList1”中

CheckBoxList1.Attributes.Add("onclick","return HandleOnCheck()");
在.cs文件中,我不想执行此CheckBoxList1.clearSelection()

任何帮助都会很好


谢谢你

你的问题很清楚,但还不够具体。但让我们一起努力找出解决办法

如果您试图选中或取消选中前一项,我建议您在“ListItem”的类中使用onclick处理程序,而不是在列表本身中使用onclick处理程序(假设有人单击列表项旁边,因此您的状态将不正确)

这也使您可以自由地不再依赖于浏览器兼容性,如window.event或event,或其他任何功能。您可以将节点作为函数的参数

ListItem1.Attributes.Add("onclick","return HandleOnCheck(this)");
ListItem2.Attributes.Add("onclick","return HandleOnCheck(this)");
此外,尽量避免使用硬编码id的内部检查功能

接下来,您可以更好地将项目状态保存在函数范围内,而不是保存在函数范围外。您可以通过将参数指定给函数本身来完成此操作,如下所示:

HandleOnCheck.selectedItem = someNode;
因此,完整的代码是:

function HandleOnCheck(node) {
    var oldNode = HandleOnCheck.selectedItem;
    if(oldNode) {
        oldNode.checked = false;
    }

    HandleOnCheck.selectedItem = node;
}
和处理程序部分:

ListItem1.Attributes.Add("onclick","return HandleOnCheck(this)");
ListItem2.Attributes.Add("onclick","return HandleOnCheck(this)");

这应该会有帮助。

这是相当令人困惑的。似乎缺少代码:
objChkd
在哪里声明?为什么在函数中定义
chkLst
,然后不使用它?最重要的是,为什么不使用实际的单选按钮?可能是因为单选按钮无法取消选中。