Javascript 如何禁用复选框?

Javascript 如何禁用复选框?,javascript,jsp,Javascript,Jsp,当使用数组填充复选框时,如何禁用复选框 <c:forEach var="item" items="${flightItems}"> <c:set var="k" value="${k+1}"/> <tr> <td><c:out value="${k}"/></td> <td>${item.startPoint}</td> <td&

当使用数组填充复选框时,如何禁用复选框

<c:forEach var="item" items="${flightItems}">
    <c:set var="k" value="${k+1}"/> 
    <tr>
        <td><c:out value="${k}"/></td>
        <td>${item.startPoint}</td>
        <td>${item.endPoint}</td>
        <td><input id="cb" type="checkbox"  name="itemId" value="${item.id}" onchange="check(this)"disabled/></td>
    </tr>
</c:forEach>

${item.startPoint}
${item.endPoint}
我需要通过点击一个复选框,其余的被禁用。而我所有的尝试都导致所有复选框都被禁用。这是我的复选框方法。我理解我的错误,但我不知道如何改正。你能建议点什么吗

function check(self) {
    var a = document.getElementById('cb');
    var checkValue = self.checked;
    for (i = 1; i < a.length; i++) {
        if (a[i].type == 'checkbox')
            a[i].checked = checkValue;
    }
}
功能检查(自检){
var a=document.getElementById('cb');
var checkValue=自检;
对于(i=1;i
类似的内容应该会为您指明正确的方向

首先,从
id
更改为
class
。ID始终是唯一的,而对于如下逻辑组件,类可以是相同的:

<c:forEach var="item" items="${flightItems}">
    <c:set var="k" value="${k+1}"/> 
    <tr>
        <td><c:out value="${k}"/></td>
        <td>${item.startPoint}</td>
        <td>${item.endPoint}</td>
        <td><input class="cb" type="checkbox"  name="itemId" value="${item.id}" onchange="check(this)"disabled/></td>
    </tr>
</c:forEach>

${item.startPoint}
${item.endPoint}
第二,

function check(self) {
    var a = document.getElementsByClassName('cb'); // get elements by class name
    var checkValue = self.checked;
    for (i = 0; i < a.length; i++) { // iterate from 0 instead of 1
        if (a[i] != self && self.checked) // if checkbox is selected.
            a[i].disabled = true; // disable others
    }
}
功能检查(自检){
var a=document.getElementsByClassName('cb');//按类名获取元素
var checkValue=自检;
对于(i=0;i
例如:

1
两个
三
四
功能检查(自检){
var a=document.getElementsByClassName('cb');//按类名获取元素
var checkValue=自检;
对于(i=0;i
@VIRICH希望这对你有帮助是的,它真的对我有帮助。但是现在如何检查,如果有一个重复的点击复选框变为启用?@VIRICH-这不是很简单吗?只要玩玩
if
逻辑-该死,我在寻找更复杂的解决方案)谢谢)当然。如果它解决了您的问题,您可以接受它作为答案。:)