Javascript 数字不断增加

Javascript 数字不断增加,javascript,jquery,Javascript,Jquery,每次选择框更改时,我都想打印下面的总价,但这是一个连续的收集过程。我希望Selectbox在每次更改时都会更改价格,但数字会不断累积。我怎样才能解决这个问题 $function{ 设toplam=0.00; $'video\u tur'.changefunction{ if!Number.isNaNparseInt$this.val{ toplam+=parseInt$this.val; document.getElementById'video_fiyat'.textContent='€'+

每次选择框更改时,我都想打印下面的总价,但这是一个连续的收集过程。我希望Selectbox在每次更改时都会更改价格,但数字会不断累积。我怎样才能解决这个问题

$function{ 设toplam=0.00; $'video\u tur'.changefunction{ if!Number.isNaNparseInt$this.val{ toplam+=parseInt$this.val; document.getElementById'video_fiyat'.textContent='€'+parseInt$this.val.toFixed2; document.getElementById'toplam_fiyat'。textContent='€'+parseInttoplam.toFixed2; }否则{ document.getElementById'video_fiyat'。textContent=€0.00; } }; $'altyazi_dil'.更改函数{ if!Number.isNaNparseInt$this.val{ document.getElementById'altyazi_fiyat'.textContent='€'+parseInt$this.val.toFixed2; }否则{ document.getElementById'altyazi_fiyat'。textContent=€0.00; } }; }; 吕特芬·塞西姆·亚普 二维 三维 吕特芬·塞西姆·亚普 蒂尔克çe 阿尔曼卡 İngilice 视频传输 €0.00 视频Seçenek €0.00 录像带 €0.00 托普兰 €0.00
您的逻辑是将它们全部相加,因为您在顶部定义了toplam变量,并且在更改值时从不重置它。这将导致新值无限添加到总数中

在元素周围添加元素,并侦听表单上的更改事件

我建议您使用从表单中获取所有值,然后使用values数组的方法对它们进行循环。这允许您在每次选择元素中的一个值更改时,对每个选择的每个值进行计数

$function{ const$form=$'price-form'; const$videoFiyat=$'videou fiyat'; 常量$altyaziFiyat=$'altyazi_fiyat'; const$toplamFiyat=$'toplam_fiyat'; //要用作过滤器的选定元素的名称。 const selectNames=['video\u tur','altyazi\u dili'] $form.on'change',functionevent{ //从表单中获取所有当前值。 让值=$form.serializeArray; //仅从选择元素中获取值。 让selectValues=values.filter{name}=>selectNames.IncludeName; //将所有值相加,并用2位小数进行修正。 让total=selectValues.reduceAc,{value}=>{ 如果!isNaNvalue{ acc+=最大值; } 返回acc; },0.1固定2; //在HTML中显示总计。 $toplamFiyat.text`${total}`; }; }; 吕特芬·塞西姆·亚普 二维 三维 吕特芬·塞西姆·亚普 蒂尔克çe 阿尔曼卡 İngilice 视频传输 €0.00 视频Seçenek €0.00 录像带 €0.00 托普兰 €0.00
试试这个,但是你还没有清楚地解释你想要什么样的行为

设toplam=0.00; 函数重新计算{ 让video_tur=parseFloat$'video_tur'.val; if Number.isNaNvideo\u tur{ 视频传输=0; } 让altyazi_dil=parseFloat$'altyazi_dil'.val; 如果编号为isNaNaltyazi_dil{ altyazi_dil=0; } toplam+=视频播放+视频播放; var video_fiyat=document.getElementById'video_fiyat'; var altyazi_fiyat=document.getElementById'altyazi_fiyat'; var toplam_fiyat=document.getElementById'toplam_fiyat' video_fiyat.textContent='€'+video_tur.toFixed2; altyazi_fiyat.textContent='€'+altyazi_dil.tofixed 2; toplam_fiyat.textContent='€'+toplam.toFixed2; } $function{ $'video\u tur'。更改重新计算; $'altyazi_dil'。重新计算; }; 吕特芬·塞西姆·亚普 二维 三维 吕特芬·塞西姆·亚普 蒂尔克çe 阿尔曼卡 İngilice 视频传输 €0.00 视频Seçenek €0.00 录像带 €0.00 托普兰 €0.00
你所说的不断收集是什么意思?你是说总数是如何不断增加的?您有toplam+=parseInt$this.val;这将使变量不断递增。@DominiqueFortin是的,它一直在收集。你的意思是只做toplam=parseInt$this.val吗?@Jacob实际上我想做的是在两个选择框都更改时获取值并显示总数。这样,由于存在输入,它会给出一个错误。表单中有textarea和input。我添加了一个过滤器,它将只过滤掉video_tur和altyazi_dili字段中的值。它比较name属性值,因此如果要编辑表单,请确保它们相同。