Javascript 使用来自输入的数据更新数组

Javascript 使用来自输入的数据更新数组,javascript,html,arrays,input,Javascript,Html,Arrays,Input,我有几个输入,我正在复制n次,并试图从数组中的输入中添加数值。我标记了单词“add”,因为数组可能已经被其他数字填充了 我试图应用Dave的回答中的方法: 示例: var exampleArray = [[1, 1.5], [1, 1], [0, 25.5], [25, 1.5], [25.4, 1]]; 我有一个数组: var exampleArray = [[1, 1.5], [1, 1], [0, 25.5]]; 我所做的: 在第一个输入中写入值25。在第二个输入中写入值1.5 创建

我有几个输入,我正在复制n次,并试图从数组中的输入中添加数值。我标记了单词“add”,因为数组可能已经被其他数字填充了

我试图应用Dave的回答中的方法:

示例:

var exampleArray = [[1, 1.5], [1, 1], [0, 25.5], [25, 1.5], [25.4, 1]];
我有一个数组:

var exampleArray = [[1, 1.5], [1, 1], [0, 25.5]];
我所做的:

在第一个输入中写入值25。在第二个输入中写入值1.5

创建两个新输入

在第一个输入中写入值25.4。在第二个输入中写入值1

按下按钮添加到数组中

我想要达到的目标:

var exampleArray = [[1, 1.5], [1, 1], [0, 25.5], [25, 1.5], [25.4, 1]];
我达到的目标:

var exampleArray = [[1, 1.5], [1, 1], [0, 25.5], [25, 1.5], [25.4, 1]];
控制台日志中的“Udefined”

这是我的代码的JSFIDLE链接:

更新了代码片段(好的,现在并不难,MTCoster,谢谢你的建议):

var总输入;
var-myinput;
var-tmpARR=[];
变量计数=0,
类型=['t','C'/*,'Q'*/],
button=document.getElementById('button');
按钮。addEventListener(“单击”,createInputs,false);
函数createInputs(){
如果(!validInput()){
返回;
}
计数+=1;
创建输入(计数);
}
函数createInput(计数){
totalInputs=document.getElementsByClassName('myInput')。长度;
var existingNode=document.getElementsByClassName('myInput')[totalInputs-1];
type.forEach(函数(类型){
var newNode=existingNode.cloneNode();
newNode.value=null;
newNode.id=类型++计数;
newNode.placeholder='placeholder'+类型;
newNode.dataset.id='id'+计数;
追加节点(newNode);
})
}
函数追加节点(node){
document.querySelector(“#div”).appendChild(节点);
}
函数validInput(){
myInputs=document.getElementsByCassName('myInput');
var valid=true;
Array.prototype.slice.call(myInputs).forEach(函数(输入){
input.classList.remove('error');
如果(!input.value){
input.classList.add('error');
有效=错误;
}
});
返回有效;
}
函数removeError(事件){
event.classList.remove('error');
}
函数guardarNumeros(){
boxvalue=document.getElementsByCassName('myInput')。值;
tmpARR.push(框值);
控制台日志(tmpARR);
返回false;
}
#标题{
字体系列:“泰晤士报新罗马”,泰晤士报,衬线;
字体大小:200%;
}
#台阶{
字体大小:15磅;
明确:两者皆有;
}
#步骤2{
字体大小:15磅;
明确:两者皆有;
}
#步骤3{
字体大小:15磅;
明确:两者皆有;
}
总结{
背景#009688;
颜色:#fff;
填充物:5px;
利润底部:3倍;
文本对齐:左对齐;
光标:指针;
填充物:5px;
宽度:250px;
/*背景色:#4CAF50*/
}
摘要:悬停{
背景:#008999;
}
.displayBlockInline Flex{
显示:内联flex;
}
#边缘20{
左边距:20px;
垂直对齐:中间对齐;
}
#容器{
宽度:自动;
高度:自动;
保证金:0自动;
显示:无;
}
a、 我的按钮{
颜色:#fff;
/* цвет текста */
文字装饰:无;
/* убирать подчёркивание у ссылок */
用户选择:无;
/* убирать выделение текста */
背景:rgb(212,75,56);
/* фон кнопки */
大纲:无;
/*бббббббббббббб*/
文本对齐:居中;
光标:指针;
宽度:150px;
填充底部:11px;
}
a、 我的按钮:悬停{
背景:rgb(232,95,76);
}
/* при наведении курсора мышки */
a、 myButton:活动{
背景:rgb(152,15,0);
}
/* при нажатии */
.按钮1{
/*背景色:#fc0;/*аааааааа*/
/*填充物:5px;/*Пааааааа*/
浮动:左;
/* Обтекание по правому краю */
宽度:450px;
/* Ширина слоя */
}
.按钮2{
/*背景色:#C0C0C0C0;/*фаааааааа*/
/*填充物:5px;/*Пааааааа*/
宽度:650px;
/* Ширина слоя */
浮动:对;
/* Обтекание по правому краю */
}
.清楚{
清除:左;
/* Отмена обтекания */
}
.包装纸{
宽度:1100px;
左边距:20px;
}
/*投入*/
#div{
文本对齐:居中;
}
.myInput{
高度:40px;
大纲:无;
宽度:自动;
边框:1px实心#999;
边界半径:4px;
填充物:5px10px;
保证金:5px;
显示:内联块;
}
.myInput.error{
边框:1px纯红;
}
#行动{
利润率:10px0;
文本对齐:居中;
}
#钮扣{
宽度:190px;
高度:40px;
背景#009688;
颜色:#fff;
字号:600;
字体大小:13px;
边界半径:4px;
边界:无;
/*文本转换:大写*/
大纲:无;
光标:指针;
}
#按钮:悬停{
背景:#008999;
}

添加更多输入
错误出现在“guardarNumeros”函数中,因为getElementsByClassName返回集合,而集合没有“value”属性

试试这个代码

function guardarNumeros() {
    const inputs = [...document.getElementsByClassName('myInput')];
    const inputNumberArr = inputs.filter(x => x.type === 'number');
    // tmpARR = [];
    for (let i = 0; i < inputNumberArr.length; i++) {
      const element = inputNumberArr[i];
      if (i % 2 === 0) {
        tmpARR.push([element.value]);
      } else if (tmpARR[tmpARR.length -1] instanceof Array) {
        tmpARR[tmpARR.length -1].push(element.value);
      } else {
        tmpARR.push([element.value]);
      }
    }
      return false;
    }
函数guardarNumeros(){
常量输入=[…document.getElementsByClassName('myInput');
const inputnumberrar=inputs.filter(x=>x.type=='number');
//tmpARR=[];
for(设i=0;i
getElementsByCassName()方法返回所有 文档中具有指定类名的元素,作为节点列表 反对

您可以迭代所有数值输入的集合并更新结果。但我建议您为数值输入创建另一个类,这样您就不需要检查