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