JavaScript 中的复选框

发布于 2024-12-13 14:22:48 字数 1884 浏览 1 评论 0原文

事情是这样的。任务是编写一个函数,该函数应该能够确定每个问题选中的复选框数量,并在选择超过 3 个答案时提示用户。 我总共有 8 个问题,每个问题有 4 到 8 个答案,采用复选框格式。 这就是我想到的:

function countChecks(){
   var m = 0;
   var n = 0;
 chk = document.getElementsByName("DSelectionID");

  for(var i=0; i<myitems.length i=""></myitems.length>
   var value = myItems[i];

  for(n = 0; n < value.length; n++) {
 if(value[n].checked)  {
  m++;
 }
 }
 return m;
 }

上面的函数对于一个问题工作正常,并将“m”返回到主函数,主函数以这种方式处理它:

var check = countchecks();

if (check > 3)
 alert ("more than 3 checkboxes were selected");
   else { 
 //do the thing 
}  

遍历所有 8 个问题,这就是我想到的:

 function countChecks(){

   var m = 0;
   var n = 0;

//this captures id 代表正确的问题

 chk = document.getElementsByName("DSelectionID");
 chk2 = document.getElementsByName("DSelectionID2");
 chk3 = document.getElementsByName("DSelectionID3");
 chk4 = document.getElementsByName("DSelectionID4");
 chk5 = document.getElementsByName("DSelectionID5");
 chk6 = document.getElementsByName("DSelectionID6");
 chk8 = document.getElementsByName("DSelectionID8");
 chk9 = document.getElementsByName("DSelectionID9");

  var myItems = new Array();

  myItems[0]= chk;
  myItems[1]= chk2;
  myItems[2]= chk3;
  myItems[3]= chk4;
  myItems[4]= chk5;
  myItems[5]= chk6;
  myItems[6]= chk8;
  myItems[7]= chk9;

//循环所有问题 对于(变量我= 0;我 var 值 = myItems[i];

//循环遍历每个问题的复选框

 for(n = 0; n < value.length; n++)
  {
  if( value[n].checked)
  {
      m++;
     if (m > 3) {
    return false; 
   }
  }
 }
   }
}

,主体像这样处理它:

var check = countChecks() 
if (check == false)
alert ("more than 3 checkboxes were selected");
   else {
//do the thing
  }

这是一个非常简单的东西,我在 countChecks() 函数中丢失了 有什么想法吗?

Here's the deal. The task is to write a function which should be able determine the number of checkboxes checked for each question and prompt a user if more than 3 answers were selected.
I have a total of 8 questions and each question has 4 to 8 answers, in the checkbox format.
This is what I came up with:

function countChecks(){
   var m = 0;
   var n = 0;
 chk = document.getElementsByName("DSelectionID");

  for(var i=0; i<myitems.length i=""></myitems.length>
   var value = myItems[i];

  for(n = 0; n < value.length; n++) {
 if(value[n].checked)  {
  m++;
 }
 }
 return m;
 }

the above function works fine for one question and returns 'm' to the main function, which handles it this way:

var check = countchecks();

if (check > 3)
 alert ("more than 3 checkboxes were selected");
   else { 
 //do the thing 
}  

to traverse all the 8 questions this is what I came up with:

 function countChecks(){

   var m = 0;
   var n = 0;

//this captures id's for the right questions

 chk = document.getElementsByName("DSelectionID");
 chk2 = document.getElementsByName("DSelectionID2");
 chk3 = document.getElementsByName("DSelectionID3");
 chk4 = document.getElementsByName("DSelectionID4");
 chk5 = document.getElementsByName("DSelectionID5");
 chk6 = document.getElementsByName("DSelectionID6");
 chk8 = document.getElementsByName("DSelectionID8");
 chk9 = document.getElementsByName("DSelectionID9");

  var myItems = new Array();

  myItems[0]= chk;
  myItems[1]= chk2;
  myItems[2]= chk3;
  myItems[3]= chk4;
  myItems[4]= chk5;
  myItems[5]= chk6;
  myItems[6]= chk8;
  myItems[7]= chk9;

//loops through all the questions
for(var i=0; i
var value = myItems[i];

//loops through the checkboxes for each question

 for(n = 0; n < value.length; n++)
  {
  if( value[n].checked)
  {
      m++;
     if (m > 3) {
    return false; 
   }
  }
 }
   }
}

and the main body handles it like this:

var check = countChecks() 
if (check == false)
alert ("more than 3 checkboxes were selected");
   else {
//do the thing
  }

It is something very simple I'm missing in the countChecks() function
Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

不乱于心 2024-12-20 14:22:48

使用 jquery 将使这变得非常简单

if ($('#yourform input[type=checkbox]:checked').length() > 3) {
   alert('More than 3 checked');
}

Using jquery would make this pretty trivial

if ($('#yourform input[type=checkbox]:checked').length() > 3) {
   alert('More than 3 checked');
}
总以为 2024-12-20 14:22:48

chk = document.getElementsByName("DSelectionID"); 不会获取 ID,而是获取对 DOM 中元素的引用。

要获取 ID,您需要使用:

chk = document.getElementsByName("DSelectionID").getAttribute("id")

chk = document.getElementsByName("DSelectionID"); does not grab the ID, it grabs a reference to the element in the DOM.

To get the ID you need to use:

chk = document.getElementsByName("DSelectionID").getAttribute("id")
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文