Javascript jquery使警报等于名称数组

Javascript jquery使警报等于名称数组,javascript,jquery,Javascript,Jquery,上面的代码查看我的复选框是否选中。如果未选中这些复选框,则会在控制台中记录未选中复选框的名称。我想获取这些名称并将它们放在警报框中,并且正在努力访问每个循环之外的element.name。有人有什么想法吗 //页面准备就绪时 jQuery(“用户价格接受”).submit(函数(事件){ //提交表格 event.preventDefault(); var test=jQuery(this).find('input[type=checkbox]:not(:checked')) var test2

上面的代码查看我的复选框是否选中。如果未选中这些复选框,则会在控制台中记录未选中复选框的名称。我想获取这些名称并将它们放在警报框中,并且正在努力访问每个循环之外的element.name。有人有什么想法吗

//页面准备就绪时
jQuery(“用户价格接受”).submit(函数(事件){
//提交表格
event.preventDefault();
var test=jQuery(this).find('input[type=checkbox]:not(:checked'))
var test2='';
测试。每个((i,元素)=>{
console.log(element.name)
test2=element.name;
})
返回test2;
如果(测试长度>0){
警报(test2);
}
});
jQuery提供了一种简便的方法,您可以使用它将元素集合转换为数据数组

然后,您可以将该数组转换为一个字符串,并
alert

jQuery(“#用户#价格_接受”)。在(“提交”,函数(事件){
event.preventDefault()
const test=jQuery(this).find('input[type=checkbox]:not(:checked'))
const names=test.map((_,el)=>el.name).get()//get()返回底层数组
如果(名称.长度){
警报(名称.连接(“,”))
}
})

您缺少名称的串联,每次用新名称替换test2时。此外,在函数中返回test2将超出函数的范围,并且不会执行警报代码。我修改了几行

test2+=element.name;//在测试2中添加名称

返回测试2;//在警报代码后删除此行或句柄

// when page is ready
jQuery("#user_price_accept").submit(function(event) {
  // on form submit
  event.preventDefault();
  var test = jQuery(this).find('input[type=checkbox]:not(:checked)')
  var test2 = '';
  test.each((i, element) => {
    console.log(element.name)
    test2 += "," + element.name;
  })
  //return test2;
  if (test.length > 0) {
    alert(test2);
  }
});

首先,你在警报前返回。这将停止执行在此之后发生的相同括号中的任何内容

其次,在循环内部重新分配test2。即使您可以在循环之外访问它,您将得到的只是最后一个元素的名称。尝试使用
test2+=','+元素。名称

第三,这一点:

if (test.length > 0) {
    alert(test2);
  }

看起来您正在检查未更改列表的长度。除了您上面定义的测试之外,还有另一个jQuery对象(我不确定它是否内置了长度,但我离题了)。不过还是没变。如果这是您正在寻找的,那很好,但是我会将
test.each((…
在if语句内部

返回test2有什么用?之后将不会执行任何操作,以使变量在每个循环外部可访问,如果没有任何delimiters@Phil在代码中使用逗号分隔进行了修改。感谢您的注释。在上面,感谢您的注释t、 我是将其添加到函数中还是在.each中,还是替换现有的var测试?@Manny我已经更新了我的答案以使其更清晰