我有以下HTML:
<input class="type" id="carbNumber">
<input class="type" id="otherId">
我想将输入值存储在一个对象中。
let data = {
inputData: []
}
document.querySelector('input').addEventListener('blur', updateItem)
function updateItem(){
data.inputData.push(this.value)
}
因为我有多个输入元素,所以我想将它们的值存储在数组中。如果我在同一个输入元素中输入了另一个值-我已经在其中输入了其他值-如何确定第一次存储先前值的位置,然后将其替换为新值?
最佳答案
您可以使用input
元素中由querySelectorAll
返回的索引号:
const data = {
inputData: []
}
// Use the callback argument of `Array.from` and the `i` index:
Array.from(document.querySelectorAll('input'), (inp, i) => {
inp.addEventListener('input', updateItem.bind(inp, i)); // pass `i`
});
function updateItem(i){ // capture `i`
data.inputData[i] = this.value;
console.log('inputData:' + data.inputData);
}
<input id="a">
<input id="b">
<input id="c">
注意:我使用
input
事件在键入时立即显示结果。