永发信息网

javascript限定选框选择个数最大为3个的问题

答案:2  悬赏:30  手机版
解决时间 2021-03-24 12:03
javascript限定选框选择个数最大为3个的问题
最佳答案
function limit() {
var genreChoices = document.getElementsByName("genre");
var count = 0;
var lim = 3;
// 初始第一个不显示??为什么
genreChoices[0].disabled = "disabled";
for (var i = 0; i < genreChoices.length; i++){
if (genreChoices[i].checked) {
count += 1;
}
}
if (count == lim) {
for (var i = 0; i < genreChoices.length; i++){
if (!genreChoices[i].checked){
genreChoices[i].disabled = "disabled";
}
}
}else {
for (var i = 0; i < genreChoices.length; i++){
genreChoices[i].removeAttribute("disabled");
}
}
}这是按照你最新图片我所给出的代码,你看一下是不是和你的逻辑一样

我有强迫症,大括号不配对难受,见谅!
看你的意思是使对象不能够被操作,应该是 disabled = false/true吧  火狐不支持 disabled =“disabled”的
追问哦对了……第一个不显示是因为我运行不出来想试试……删掉就好……
太谢谢哥们了,我先去看看
就是这样的,出不来效果 T T
我觉得是我下面不会调用这个,因为还没有学过这部分
document.getElementsByName("genre").onclick = limit; 应该是这里没调用出来追答恩,那你去试试吧,我倒没注意那块!
你在limit里面增加alert看有没有调用!追问我把调用改成
var get=document.getElementsByName("genre");
for(i=0;i {
get[i].onclick=limit();
}
按上面那位改的,然后再开头加了alert,打开网页跳了9次窗口,应该是调用了……但还是不能限制选择个数追答那个不应该是在点击的时候再进行limit函数吗?
而且你的逻辑还是不够完善。
你在调用时还是把你的对象传递过去吧
var count = 0;
var lim = 3;
var genreChoices = document.getElementsByName("genre");
function limit(genreObj) {
    if (genreObj.checked) {
            count += 1;
        }else{
            count -= 1;
        }
    if (count == lim) {
        for (var i = 0; i < genreChoices.length; i++){
            if (!genreChoices[i].checked){
                genreChoices[i].disabled = true;
            }
        }
    }else{
        for (var i = 0; i < genreChoices.length; i++){
            genreChoices[i].removeAttribute("disabled");
        }
    }    
}这是我改的一个方案。你看一下
全部回答

前面代码看起来貌似没问题,只是最后在init这个方法里的document.getElementsByName("genre").onclick = limit;
这段有问题,getElementsByName出来的不应该是数组么,这么绑定鼠标事件是不行的吧?

应该是var get=document.getElementsByName("genre");
for(i=0;i{
    get[i].onclick=limit();
}
不知道有没有错误...你自己仔细看看,浏览器里都是有调试的,按F12可以调试,不行你把代码和HTML上传到网盘帮你看看
自己看了下,for循环没加括号,genreChoices[0].disabled = "disabled";这里应该是布尔值:false追问还是不行 T T追答
算了,直接在你基础上帮你直接改好吧,取消禁用选择代码自己添加...最近没用JS果真很多也忘了,上面有些错误的地方genreChoices[i].disabled = "disabled"的确是这么用的,get[i].onclick=limit;不加括号也可以 function limit()
{
    var genreChoices = document.getElementsByName("genre");
    var count = 0;
    var lim = 3;
    for (var i = 0; i < genreChoices.length; i++)
    {
        if (genreChoices[i].checked==true)
        {
            count++;
        }
        //如果选择第4个则取消选择
        if(count > lim)
        {
         genreChoices[i].checked=false;
        }
        //选中3个后,禁用选择
        if (count >= lim && genreChoices[i].checked==false)
        {
            genreChoices[i].disabled = "disabled";
        }
    }
}
function init()
{
var get=document.getElementsByName("genre");
for(i=0;i{
    get[i].onclick=limit;
}

}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
G112/丰津线(路口)地址在什么地方,想过去办
国企采购该如何加强管理
为什么运行出来没结果,哪里出了问题,好像sc
侠岚中千钧的爸爸一个两仪侠岚为什么还打不过
关于善的诗句纪伯伦,有哪些关于孤独的名言,
魅族MX3型号是M351不能用移动3G网么?
单选题安装家庭电路时,下列做法不必要的是A.
才买了双aj13 猫眼是红色的 看的到aj标志 也
鹤岗电厂好 还是新华电厂好 我马上要毕业了,
鸿佳购物广场南门在什么地方啊,我要过去处理
老龙江怎么去啊,有知道地址的么
泰国V_line瘦脸霜是三无产品吗,泰国有这个品
那个什么ipa精灵助手对苹果手机有损害吗?
草蜢和蝗虫有什么区别?
在海里游泳的句子好,关于小孩在大海里游泳的
推荐资讯
见开头的成语
2005年10月12日,长征二号F型运载火箭托举着
DJ-绝对震撼-心脏不好者勿进-2010Scooter德国
中国留学生如何走出华人圈
用六句七字诗表达里面必须有“吴世花我爱你”
阿里为什么对社交这么紧张
单选题Tina went to the par
怎样治脱发
蛋白石的含义是什么?
滁州集成墙面哪个牌子比较好
人体能感觉到的热量来自哪里?
单选题下列地理位置写法正确的是A.20°,160
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?