Javascript 此功能也取消选择单选按钮的原因是什么?

Javascript 此功能也取消选择单选按钮的原因是什么?,javascript,html,Javascript,Html,因此,我使用此函数使其一次只能选择一个复选框 function checkOnly(stayChecked) { with (document.drinkList) { for (i = 0; i < elements.length; i++) { if (elements[i].checked == true && elements[i].name !=

因此,我使用此函数使其一次只能选择一个复选框

function checkOnly(stayChecked) {
                with (document.drinkList) {
                    for (i = 0; i < elements.length; i++) {
                        if (elements[i].checked == true && elements[i].name != stayChecked.name) {
                            elements[i].checked = false;
                        }
                    }
                }
            }
仅功能检查(保留检查){
with(document.drinkList){
对于(i=0;i

这段代码可以工作,但是,选中复选框后,我的表单中的所有单选按钮都将被取消选中。有什么方法可以通过使用当前代码来解决这个问题吗?谢谢。

单选按钮也有一个
checked
属性,因此由于您正在迭代所有元素,因此单选按钮也会被取消选择。您可以通过检查元素的
标记名
属性来避免这种情况,这样您就可以检查它是否是复选框

但实际上你不应该这么做。不要编写只允许选中一个复选框的脚本。改用单选按钮。如果只能选择一个选项,则单选按钮是要使用的控件,而复选框用于多个选项。您现在基本上是在编写复选框脚本,使其行为类似于单选按钮,这很容易出错,而且不便于用户使用,因为这与预期背道而驰

无论如何,如果您想这样做,可以使用以下代码段。它不使用jQuery,尽管它使用了一些仅在最近的浏览器中可用的Javascript。 加载DOM后,它仅将单击事件绑定到复选框。单击此复选框将取消选择所有其他复选框。此外,您不能通过再次单击复选框来取消选中复选框本身。这样,这种行为就像一个单选按钮。所以,是的,你可以。但是,不,你不应该。:)
window.addEventListener('DOMContentLoaded',function(){
//获取所有复选框并将单击事件处理程序绑定到它们
var checkbox=document.querySelectorAll('input[type=“checkbox”]”);
对于(变量i=0;i
选项1
选择2
选择3
选择4
选择5

选项6
看起来您正在迭代表单中的所有元素,而不仅仅是复选框组中的元素,因此您正在捕获刚才选中的一个复选框,保持其未被触及,并清除迭代的所有其他元素

您到底在使用jQuery吗?您可以相当容易地选择粒度更高的元素,确保您只是从启动函数的组中获取复选框,并确保您只对这些复选框进行迭代

我还想知道,如果你让复选框的行为像单选按钮,为什么不使用单选按钮

另一个选项是在清除之前确认所选元素的类型

type == "checkbox"
然后仅清除类型为==“复选框”的元素


元素[i]。选中==true&&elements[i]。名称!=stayChecked.name&&elements[i].type==“checkbox”

检查
.tagName
属性以确保它不是单选按钮。您应该使用。我给教授发了电子邮件,告诉她这一点,但她坚持我一件事使用单选按钮,另一件事使用复选框。Idk为什么她想把难度提高10倍。也许她想为另一个选择选择多选。。或者她想展示为什么使用单选按钮更好。也许她很傻,这有时会发生。不管怎样,只要你知道其中的区别她让我们使用单选按钮选择大小(小、中、大),然后选中3种口味的冰淇淋,也只能选择一种。这就是我困惑的原因,你确定吗?我想混合口味。我要一大杯巧克力、椰子和杏仁。当然,我看不懂作业,但这个问题是多选题还是有道理的。不管怎样,我已经提供了一个脚本,告诉你如果你想怎么做,但我会认真地重新考虑。;-)哈哈,这只是一个圣代,但我知道你是从哪里来的:)不,这是为我的javascript类。我没有接触过jQuery,但我经常看到它。我们必须使用单选和复选框,但复选框必须像单选按钮一样工作。Idk,我的教授疯了。