感谢hookee 写的程序,但还有点小问题。页面环境:页面上有一个总金额输入框,下方有4个复选框表明产品系列,每个产品系列后跟一个输入框。 
求助实现功能:当总金额框中输入金额后,点击下方产品复选框,上方总金额除以点击复选框产品系列的选定个数,如选定一个,就除以1 选定其中2个就除以2,并在选定产品系列后方输入框内显示平均数,且平均数取整汇总等于总金额。求大家如何实现。 
现在的问题是:比如总金额输入11,产品选择A B 明细金额取整为5和5 合计不等于总金额,现想实现在最后一个选择的产品金额上补足,使明细金额取整后一定等于总金额! 谢谢大家源代码如下:
<script>
function doit(){
    var f = document.forms[0];
    var sum = f.sum.value;
    if(isNaN(sum) || sum=="") return;
    sum = parseInt(sum,10);
    var a = [];
    var A = "A".charCodeAt(0)
    for(var i=0;i<f.check.length;i++){
        if(f.check[i].checked) a[a.length] = f.elements[String.fromCharCode(A + i)];
        else f.elements[String.fromCharCode(A + i)].value = "0";
    }
    var av = sum / a.length
    for(var i=0;i<a.length;i++) a[i].value = parseInt(av,10);
}
</script>
<form> 
  <p>总金额<input type="text" name="sum"></p> 
  <table width="75%" border="1">
      <tr>  
          <td width="24%"><input type="checkbox" name="check" onclick="doit()">产品系列A</td>  
          <td width="76%">平均金额 <input type="text" name="A" value="0"></td>  
      </tr>  
      <tr>  
          <td><input type="checkbox" name="check" onclick="doit()">产品系列B</td> 
          <td>平均金额 <input type="text" name="B" value="0"></td>  
      </tr>  
      <tr>  
          <td><input type="checkbox" name="check" onclick="doit()">产品系列C</td>  
          <td>平均金额 <input type="text" name="C" value="0"></td>  
      </tr>  
      <tr>  
          <td><input type="checkbox" name="check" onclick="doit()">产品系列D</td>  
          <td>平均金额 <input type="text" name="D" value="0"></td>  
      </tr>
  </table>
</form>

解决方案 »

  1.   

    完成后,再加一次计算即可,把总金额减去所有input中的金额总数,将多出差额加在最后那个input中
      

  2.   

    <script> 
    function doit(){ 
        var f = document.forms[0]; 
        var sum = f.sum.value; 
        if(isNaN(sum) || sum=="") return; 
        sum = parseInt(sum,10); 
        var a = []; 
        var A = "A".charCodeAt(0) 
        for(var i=0;i <f.check.length;i++){ 
            if(f.check[i].checked) a[a.length] = f.elements[String.fromCharCode(A + i)]; 
            else f.elements[String.fromCharCode(A + i)].value = "0"; 
        } 
        var av = sum / a.length 
        for(var i=0;i <a.length;i++) a[i].value = parseInt(av,10); 
        a[a.length-1].value = parseInt(a[a.length-1].value) + sum % a.length;

    </script> 
      

  3.   

    <script> 
    function doit(){ 
        var f = document.forms[0]; 
        var sum = f.sum.value; 
        if(isNaN(sum) || sum=="") return; 
        sum = parseInt(sum,10); 
        var a = []; 
        var A = "A".charCodeAt(0) 
        for(var i=0;i <f.check.length;i++){ 
            if(f.check[i].checked) a[a.length] = f.elements[String.fromCharCode(A + i)]; 
            else f.elements[String.fromCharCode(A + i)].value = "0"; 
        } 
        var av = sum / a.length 
        for(var i=0;i <a.length;i++) a[i].value = parseInt(av,10); 
        for(var i=1;i <=sum % a.length;i++) a[a.length-i].value = parseInt(a[a.length-i].value) + 1; //another way.select what you want by yourself.

    </script>