Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 变量未在更改时更新-jQuery_Javascript_Jquery - Fatal编程技术网

Javascript 变量未在更改时更新-jQuery

Javascript 变量未在更改时更新-jQuery,javascript,jquery,Javascript,Jquery,我有一个复选框数组,当单击一个复选框时,我想存储一个新的数组,其中的复选框被选中和未被选中。但是,当I console.log记录新数组时,无论它们处于何种状态,它仍然会充满所有这些数组 有人知道为什么吗 代码: .change不返回数组,它返回绑定处理程序的jQuery集合 您需要在handler函数中分配变量。你需要使用。过滤器 .change不返回数组,它返回绑定处理程序的jQuery集合 您需要在handler函数中分配变量。你需要使用。过滤器 你让自己的生活变得不必要的困难。如果希望每

我有一个复选框数组,当单击一个复选框时,我想存储一个新的数组,其中的复选框被选中和未被选中。但是,当I console.log记录新数组时,无论它们处于何种状态,它仍然会充满所有这些数组

有人知道为什么吗

代码:

.change不返回数组,它返回绑定处理程序的jQuery集合

您需要在handler函数中分配变量。你需要使用。过滤器

.change不返回数组,它返回绑定处理程序的jQuery集合

您需要在handler函数中分配变量。你需要使用。过滤器


你让自己的生活变得不必要的困难。如果希望每次单击一个复选框时获得选中DOM元素的集合,可以执行以下操作:

let allBtns=$('#blue,#green,#white,#red,#black'
+',#colourless,#multicoloured');
let chkd;
allBtns.click(e=>chkd=allBtns.filter(':checked'))
这将得到一个jQuery选择chkd,其中包含所有选中的复选框。这些行包含所有需要执行的操作

如果您想要一个普通DOM元素数组而不是jQuery选择,您可以对其应用.toArray:


你让自己的生活变得不必要的困难。如果希望每次单击一个复选框时获得选中DOM元素的集合,可以执行以下操作:

let allBtns=$('#blue,#green,#white,#red,#black'
+',#colourless,#multicoloured');
let chkd;
allBtns.click(e=>chkd=allBtns.filter(':checked'))
这将得到一个jQuery选择chkd,其中包含所有选中的复选框。这些行包含所有需要执行的操作

如果您想要一个普通DOM元素数组而不是jQuery选择,您可以对其应用.toArray:


感谢您的回答,但由于某些原因,它们不起作用

做了一些手脚,并以这种方式解决了问题:

  let colourCheckbox = [
    blue,
    green,
    white,
    red,
    black,
    colourless,
    multicoloured
  ];

  let checkedCheckboxes = [];

  $('.colour-checkbox').change(() => {
    checkedCheckboxes.length = 0;
    colourCheckbox.forEach(element => {
      if ($(element).is(':checked')) {
        checkedCheckboxes.push(element);
      }
    });
  });

首先,初始化一个空数组,然后在更改时,循环通过colorcheckbox数组,并将:复选框推送到空数组。最后,使用CheckedCheckBox.length=0;从CheckedCheckBox数组中清除以前的循环结果。

感谢您的回答,但由于某些原因,这些结果不起作用

做了一些手脚,并以这种方式解决了问题:

  let colourCheckbox = [
    blue,
    green,
    white,
    red,
    black,
    colourless,
    multicoloured
  ];

  let checkedCheckboxes = [];

  $('.colour-checkbox').change(() => {
    checkedCheckboxes.length = 0;
    colourCheckbox.forEach(element => {
      if ($(element).is(':checked')) {
        checkedCheckboxes.push(element);
      }
    });
  });
首先,初始化一个空数组,然后在更改时,循环通过colorcheckbox数组,并将:复选框推送到空数组。最后,使用CheckedCheckBox.length=0;从CheckedCheckBox数组中清除以前的循环结果

  let colourCheckbox = [
    blue,
    green,
    white,
    red,
    black,
    colourless,
    multicoloured
  ];

  let checkedCheckboxes = [];

  $('.colour-checkbox').change(() => {
    checkedCheckboxes.length = 0;
    colourCheckbox.forEach(element => {
      if ($(element).is(':checked')) {
        checkedCheckboxes.push(element);
      }
    });
  });