Javascript JS-setAttribute(具有2个参数的函数)到二维数组

Javascript JS-setAttribute(具有2个参数的函数)到二维数组,javascript,foreach,parameters,Javascript,Foreach,Parameters,我想为我的表格做一个微型计算器。我的html表单是基于数据原型的,所以它呈现无限量的表单,有两个输入:日期和持续时间。 此输入使用ID-s呈现,如贷款费用费用费用费用0费用日期,贷款费用费用1费用期限;下一个:loan\u charge\u 1\u date,loan\u charge\u 1\u duration`等等 我已经编写了一段代码,使用regex创建了一个数组,其中包含日期的所有id,另一个数组包含持续时间的所有id。因此,当我点击添加新表单的+按钮时,我的日期数组=[loan\u

我想为我的表格做一个微型计算器。我的html表单是基于数据原型的,所以它呈现无限量的表单,有两个输入:日期和持续时间。 此输入使用ID-s呈现,如
贷款费用费用费用费用0费用日期
贷款费用费用1费用期限
;下一个:
loan\u charge\u 1\u date
,loan\u charge\u 1\u duration`等等

我已经编写了一段代码,使用regex创建了一个数组,其中包含日期的所有
id
,另一个数组包含持续时间的所有
id
。因此,当我点击添加新表单的
+
按钮时,我的
日期数组=[loan\u charge\u 0\u date]
持续时间数组=[loan\u charge\u 0\u duration]
。当我再次单击它时,它会将另一个元素推送到每个数组中,即DateIDSRARY中的
loan\u charge\u 1\u date
loan\u charge\u duration
到DurationIDSRARRAY`

现在,我需要为每一对(表单)绑定一个带有2个参数的函数,如date.value和duration.value。。。并在此函数中创建我的
endingDateCalculator

按照这个顺序,我做了一些简单的陈述,首先…将这2个数组合并,然后将它们作为一对。。。因此,结果数组是一个二维数组:

pairValuesArray = [
[loan_charge_0_date, loan_charge_0_duration],
[loan_charge_1_date, loan_charge_1_duration],
[loan_charge_2_date, loan_charge_2_duration]
];
如何将函数附加到每一对中,这样当我
onkeyup
输入的持续时间时,它将使用两个参数(this.date,this.duration)调用
endingDateCalculator
函数并执行计算

我试过smth,比如:

pairArray.forEach( x => document.getElementById(x).setAttribute('onkeyup', 'endingDateCalculator(this.value, this.value);'));
但它告诉我。。。无法将setAttribute运行到空值:/

我的整个脚本如下:

<script>
var bodyText =  document.getElementsByClassName('panel-group')[0].innerHTML;
var durationIds = bodyText.match(/id="(.*duration)"/g);
var durationIdArray = durationIds.map(y => y = y.split('\"')[1]);

var dateIds = bodyText.match(/id="(.*date)"/g);
var dateIdArray = dateIds.map(x => x = x.split('\"')[1]);

var concatArray = new Array();

for (var i = 0; i < durationIds.length; i++) {
    concatArray.push(dateIdArray[i]);
    concatArray.push(durationIdArray[i]);
}

var pairArray = new Array ();

var i,j,temparray,chunk = 2;
for (i=0,j=concatArray.length; i<j; i+=chunk) {
    temparray = concatArray.slice(i,i+chunk);
    pairArray.push(temparray);    
}

console.debug(pairArray);
pairArray.forEach( x => document.getElementById(x).setAttribute('onkeyup', 'endingDateCalculator(this.value, this.value);'));
//dateIdArray.forEach( x => document.getElementById(x).setAttribute('onkeyup', 'endingDateCalculator(this.value);'));

function endingDateCalculator(valueOfDate, valueOfDuration) {
    alert(valueOfDate + valueOfDuration);
}

</script>

var bodyText=document.getElementsByClassName('panel-group')[0].innerHTML;
var durationIds=bodyText.match(/id=“(.*duration)”/g);
var durationdarray=durationIds.map(y=>y=y.split(“\”)[1]);
var dateid=bodyText.match(/id=“(.*date)”/g);
var dateIdArray=dateIds.map(x=>x=x.split(“\”)[1]);
var concatArray=新数组();
对于(变量i=0;idocument.getElementById(x.setAttribute('onkeyup','endingDateCalculator(this.value);');
函数EndingDate计算器(valueOfDate、valueOfDuration){
警报(valueOfDate+valueOfDuration);
}

你能为我发送你的
控制台的输出吗?debug(pairray)
如果我有两张表格,pairray看起来像:`[Array(2),Array(2)][0]Array(2)0:“loan\u charges\u 0\u date”1:“loan\u charges\u 0\u duration”[1]:Array(2)[0]:“loan\u charges\u 1\u duration”`您希望DOM中的id是什么?我上面输出的pairArray包含对值的子数组,每对都是特定日期和相同持续时间的id的组合,例如组合loan_charges_0_date和loan_charges_0_duration。我需要绑定一个函数,每个函数对2个参数。参数是贷款费用日期和贷款费用持续时间的值。所以,换句话说,我希望在我的表格中,首先介绍日期。。。例如,2017年2月28日,在引入duration时,onkeyup将运行函数,该函数将向该日期添加N个月并输出结束日期。我的意思是,您希望
setAttribute
的DOM元素的ID是什么?在HTML术语中,它只是一个元素还是每个ID都有一个对应的元素,例如