注册 登录
编程论坛 JavaScript论坛

求助一个checkbox的相关问题

无敌暴龙战士 发布于 2022-08-25 20:01, 3834 次点击
关于我有五个checkbox控件,当我点击完两个checkbox控件以后,我点击第三个的时候我想要取消前面两个里面value值比较小的那个我大致该咋写?
6 回复
#2
apull2022-08-26 10:08
前2个控件是固定的还是不固定?
不固定的话,用2个变量保存最后点击的2个控件好了。
t1=t2=null

click中,判断t1,t2是否为null,如果为null,则
t1=t2
t2=b
如果t1,t2不为null,比较t1,t2并设置值,同时令
t1=小的控件。
t2=click控件


[此贴子已经被作者于2022-8-26 10:13编辑过]

#3
无敌暴龙战士2022-08-26 10:58
回复 2楼 apull
五个checkbox控件都是固定的,但是我现在不懂的是我用什么函数来取消我之前点击的控件,我的function onclick()里面只有一个参数,然后所有的checkbox控件的name是一样的,没有id
#4
apull2022-08-26 14:51
供参考
程序代码:

<body>
    <input type="checkbox" name="chk" value="a" onclick="Cli(this)">a
    <input type="checkbox" name="chk" value="b" onclick="Cli(this)">b
    <input type="checkbox" name="chk" value="c" onclick="Cli(this)">c
    <input type="checkbox" name="chk" value="d" onclick="Cli(this)">d
    <input type="checkbox" name="chk" value="e" onclick="Cli(this)">e

    <script type="text/javascript">

        function Cli(obj) {
            if (obj.checked == false) return;

            var chks = document.getElementsByName('chk');
            var ar = [];
            chks.forEach(element => {
                if (element != obj && element.checked)
                    ar.push(element);
            });

            if (ar.length < 2) return;

            if (ar[0].value < ar[1].value)
                ar[0].checked = false;
            else
                ar[1].checked = false;
        }
    </script>
</body>
#5
无敌暴龙战士2022-08-26 17:57
回复 4楼 apull
在你的基础上我稍微改动了一下,但是还没有达到我预期的效果,我也不知道我是什么地方出了问题
<label>
    <input type="checkbox" value="2021-12-20" name="compareDate" onchange="onClickCheck(this)" > 2021-12-20
</label>
<label>
    <input type="checkbox" value="2021-11-20" name="compareDate" onclick="onClickCheck(this)"> 2021-11-20
</label>
<label>
    <input type="checkbox" value="2021-10-20" name="compareDate" onclick="onClickCheck(this)"> 2021-10-20
</label>
<label>
    <input type="checkbox" value="2021-09-20" name="compareDate" onclick="onClickCheck(this)"> 2021-09-20
</label>
<label>
    <input type="checkbox" value="2021-08-20" name="compareDate" onclick="onClickCheck(this)"> 2021-08-20
</label>

                        
                </div>
            </div>
        </div>
    </div>
</div>

    <script>

    function onClickCheck(obj)
    {
        if (obj.checked == false) return;

        var chks = document.getElementsByName('chk');
        var ar = [];
        chks.forEach(element => {
            if (element != obj && element.checked)
                ar.push(element);
        });

        if (ar.length < 2) return;

        if (new Date(ar[0].value ) < new Date(ar[1].value))
            ar[0].checked = false;
        else
            ar[1].checked = false;
        
    };
#6
apull2022-08-26 19:03
回复 5楼 无敌暴龙战士
document.getElementsByName('chk');
把这name改成你的。
#7
无敌暴龙战士2022-08-26 19:18
回复 4楼 apull
谢谢大佬,突然发现我的div少写了一个
1