Вот небольшой фрагмент кода, который я сократил и который берет каждое поле ввода в пределах родительского элемента с атрибутом name
и использует эти значения атрибута name
в качестве ключей в объекте.
Если в качестве значений объекта используется value
полей ввода.
Это позволяет выходному объекту меняться в зависимости от того, какие поля ввода находятся в родительском элементе.Если элемент ввода не имеет name
, то он не включается.
Этот код можно использовать повторно, и он всегда возвращает необходимый объект.
const getEls = srcEl => {
const subs = [...srcEl.querySelectorAll('[name]')];
return subs.reduce((acc, sub) => {
acc[sub.getAttribute('name')] = sub.value;
sub.value = '';
return acc;
}, {});
subs[0].focus();
}
let results = [];
function doIt() {
const srcEl = document.getElementById('container');
const values = getEls(srcEl);
results.push(values);
console.log(JSON.stringify(values,0,20));
}
const btn = document.getElementById('submit');
btn.addEventListener('click', doIt);
const resultsBtn = document.getElementById('show');
resultsBtn.addEventListener('click', () => {
console.log(JSON.stringify(results,0,2));
});
<div id="container">
<p>Items Information:</p>
<input id="itemName" name="name" type="text" placeholder="enter item name"/><br/>
<input id="itemWeight" name="weight" type="number" placeholder="enter item weight(kg)"/><br/>
<input id="itemValue" name="value" type="number" placeholder="enter item value"/><br/>
<button id="submit">Enter</button>
<hr/>
<button id="show">Results</button>
</div>