javascript限定选框选择个数最大为3个的问题
答案:2 悬赏:30 手机版
解决时间 2021-03-24 12:03
- 提问者网友:抽煙菂渘情少年
- 2021-03-23 16:17
javascript限定选框选择个数最大为3个的问题
最佳答案
- 五星知识达人网友:渡鹤影
- 2021-03-23 17:41
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");
}
}
}这是我改的一个方案。你看一下
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");
}
}
}这是我改的一个方案。你看一下
全部回答
- 1楼网友:西风乍起
- 2021-03-23 18:20
前面代码看起来貌似没问题,只是最后在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;
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯