我想向输入元素添加一个事件侦听器,该元素的元素id已存储在列表中,然后获取它们的乘积。例如:
a = ['id1', 'id2', 'id3']
我想做一些类似的事情:
input element id1 = 0.5
input element id2 = 0.6
input element id3 = 1.0
return 0.5*0.6*1
我希望随着用户更改输入框中的值,这个更新。
因此,我从以下内容开始:
function calcProduct(values){
var product = 1;
for(i=0; values.length; i++){
product = product*values[i];
}
return product
}
id_list = ['id1', 'id2', 'id3']
function calcProduct(id_list){
for(i=0; id_list.length; i++){
//how do I get the values as they change so I can feed it to calcProduct?
document.getElementById(id_list[i]).addEventListener("onchange", calcProduct(values) )
}
}
2条答案
按热度按时间l7mqbcuq1#
使用事件侦听器和
reduce()
你可以累积最终产品。注意:在事件侦听器中,省略“on”,因此使用change
而不是onchange
. 为了更简单,我对将要计算的输入使用了一个类名iezvtpos2#
为此,我将结合事件授权和React式编程。
将事件侦听器连接到父节点,并在事件传入时对其进行筛选:
当
input
事件被调度到父级<div>
抓住它。这个
filter
操作员确保我们使用正确的事件。这个
scan
运算符将新值写入Map。这个
map
运算符将贴图中的值相乘。最后,订户接收并显示产品。
这样我们就可以处理多组数字。
(注意Map如何与dom中的ID和值相对应。)