我有一个表单,并且要抓取其中的所有输入元素,并将它们放入它们的键中,并将值放入一个对象中(这是可行的)...但是,我不会过滤掉不需要的按钮...如何删除/忽略它?

如果我console.log form.elements它返回:

[input#first_name.input-text, input#last_name.input-text, input#username.input-text, input#email.input-text,
button#submit.btn ...]

  const formatData = {};
  const form = document.getElementById('signup');
  console.log(form.elements);

  for (let i = 1; i < myForm.elements.length; i++) {
      // check if button and remove / ignore
      if (form[i] === 'button') { // this doesn't work
          delete form[i];
      }
      const key = form.elements[i].name;
      const value = form.elements[i].value;
      formatData[key] = value;


如何确定不包含按钮? :\(这是用jsx语法编写的)

最佳答案

您可以按form.elements过滤tagName

const formatData = {};
const form = document.getElementById('signup');

[].slice.apply( form.elements ) // convert HTMLFormControlsCollection to Array
  .filter(( el ) => el.tagName !== 'BUTTON') // filter out all <button> elements
  .forEach(function ( el ) {
      formatData[ el.name ] = el.value; // add key / value to formatData object
  });


或者,如果您喜欢for循环:

const formatData = {};
const form = document.getElementById('signup');

for (let i = 0, n = form.elements.length; i < n; i++) {
  if (form.elements[i].tagName === 'BUTTON') continue;

  formatData[ form.elements[i].name ] = form.elements[i].value;
}

关于javascript - 从form.elements数组javascript中删除按钮输入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37730627/

10-12 12:20
查看更多