如何对具有动态 ID 的字段中的值求和?

How do I do to sum values in fields with dynamic id?

我需要对表单的字段求和。字段 ID 是动态的。我需要在第三个字段中显示总和的结果。我想知道如何在 PHP 或 JS 中执行此操作。

<input type="number" id="acf-field_5a7cb1f6601f3-1-field_5a7cb278601f8" class="" min="0" max="99999" step="any" name="acf[field_5a7cb1f6601f3][1][field_5a7cb278601f8]" value="10" placeholder="">
<input type="number" id="acf-field_5a7cb1f6601f3-2-field_5a7cb278601f8" class="" min="0" max="99999" step="any" name="acf[field_5a7cb1f6601f3][2][field_5a7cb278601f8]" value="12" placeholder="">
<input type="number" id="acf-field_5a7cb1f6601f3-3-field_5a7cb278601f8" class="" min="0" max="99999" step="any" name="acf[field_5a7cb1f6601f3][3][field_5a7cb278601f8]" value="25" placeholder="">

我编辑以明确我需要什么: Example Function in PHP display Field of result... Example display result

let total = 0;
document.querySelectorAll('input[type="number"]').forEach(el=>total+=+el.value);
document.querySelector('#total').value = total;
console.log(total);
<input type="number" id="acf-field_5a7cb1f6601f3-1-field_5a7cb278601f8" class="" min="0" max="99999" step="any" name="acf[field_5a7cb1f6601f3][1][field_5a7cb278601f8]" value="10" placeholder="">
<input type="number" id="acf-field_5a7cb1f6601f3-2-field_5a7cb278601f8" class="" min="0" max="99999" step="any" name="acf[field_5a7cb1f6601f3][2][field_5a7cb278601f8]" value="12" placeholder="">
<input type="number" id="acf-field_5a7cb1f6601f3-3-field_5a7cb278601f8" class="" min="0" max="99999" step="any" name="acf[field_5a7cb1f6601f3][3][field_5a7cb278601f8]" value="25" placeholder="">
<br>
<label for="total">Total: </label>
<input id="total">

不要使用 ID,使用 document.querySelectorAll(...) 并使用您熟悉的任何 CSS 选择器。例如:

 document.querySelectorAll('input[type="number"]').forEach((el)=>{});
var sum = 0;        
$("input[type=number]").each(function() 
{ 
  if(!isNaN(this.value) && this.value.length!=0) 
  {
    sum += parseFloat(this.value);            
  }         
});

使用JQuery(在我看来你应该这样做,以免出现兼容性问题)这将对所有数字输入的值求和。您可能希望将来进一步限制它。纯JS解决方案如下:

var sum = 0;        
document.querySelectorAll("input[type=number]").forEach(function() {
  if(!isNaN(this.value) && this.value.length!=0) 
  {
    sum += parseFloat(this.value);            
  }    
});