Javascript 如何使用多个select获取表单数据,类似于jquery val?

Javascript 如何使用多个select获取表单数据,类似于jquery val?,javascript,Javascript,我正在研究将表单数据(输入、选择、文本区域)附加到表单数据的解决方案。我有多重选择的问题。 如果选择了多个选项,则选择值应类似于jquery.val()-array function getFormData(formid){ var form = document.getElementById(formid); let formdata = {}; Array.from(form.querySelectorAll('input, select, textarea')) .fil

我正在研究将表单数据(输入、选择、文本区域)附加到表单数据的解决方案。我有多重选择的问题。 如果选择了多个选项,则选择值应类似于jquery.val()-array

  function getFormData(formid){
  var form = document.getElementById(formid);
  let formdata = {};
  Array.from(form.querySelectorAll('input, select, textarea'))
 .filter(element => element.name)
 .forEach(element => {
  formdata[element.name] = element.type === 'checkbox' ? element.checked : element === 'select' ? element.map(option.selected => option.value) : element.value;
  }); 
  return formdata;
  }
我将非常感谢您的帮助。

此功能:

function getFormData(formid){
var form = document.getElementById(formid);
 let formdata = {};
 Array.from(form.querySelectorAll('input, select, textarea'))
.filter(element => element.name)
.forEach(element => {
 if(element.type === 'checkbox'){
formdata[element.name] = element.checked;
} else if(element.options) {
 var selected = [...element.selectedOptions].map(option => option.value);
 //var selected = [...element.options].filter(option => option.selected).map(option => option.value);
 if (selected.length>1){
 formdata[element.name] = selected;
 } else {
formdata[element.name] = element.value; 
 }          
} else {
formdata[element.name] = element.value; 
}
}); 
return formdata;
}

您可以使用filter方法获取所选值,当您将元素类型选中为select时,使用filter函数循环选项并获取所选值嵌套三元运算符以使代码更难阅读是没有意义的。