编程论坛
注册
登录
编程论坛
→
JavaScript论坛
求助一个checkbox的相关问题
无敌暴龙战士
发布于 2022-08-25 20:01, 3834 次点击
关于我有五个checkbox控件,当我点击完两个checkbox控件以后,我点击第三个的时候我想要取消前面两个里面value值比较小的那个我大致该咋写?
6 回复
#2
apull
2022-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
apull
2022-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
apull
2022-08-26 19:03
回复 5楼 无敌暴龙战士
document.getElementsByName('chk');
把这name改成你的。
#7
无敌暴龙战士
2022-08-26 19:18
回复 4楼 apull
谢谢大佬,突然发现我的div少写了一个
1