本帖最后由 menjiasan 于 2011-02-28 10:06:12 编辑

解决方案 »

  1.   


    alltotal不在没关系,只要实现这个效果就ok
      

  2.   

    <table>
    <tr>
    <td width="1" align="center">
    <input type="text" id="saleprice" value="370" size="3" />
    </td>
    <td align="center">
    <input type="text" id="count" onChange="sum(this)" value="0" size="3" />
    </td>
    <td align="center">
    <input type="text" disabled="disabled" id="total" value="0" size="4" />
    </td>
    </tr>
    </table>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
      
      function sum(obj){
     var saleprice = document.getElementById('saleprice');
     if(!isNaN(saleprice.value) && !isNaN(obj.value)){
      document.getElementById('total').value = saleprice.value * obj.value;
     }
      }
     
    //-->
      </SCRIPT>
      

  3.   

    完整代码如下:<table width="300" border="1"><tr>
        <td align="center">&nbsp;</td>
        <td align="center">count</td>
        <td align="center">subtotal</td>
        <td align="center">&nbsp;</td>
      </tr><tr><td width="1" align="center"><input name="saleprice1" type="text"   id="saleprice1" value="370" size="3" /></td>
    <td align="center"><input name="count" type="text" id="count1" onChange="sum(this)" value="0" size="3" /></td>
    <td align="center"><input name="total" type="text" disabled="disabled" id="total" value="0" size="4" /></td>
    <td align="center">&nbsp;</td>
      </tr>
      <tr><td width="1" align="center"><input name="saleprice1" type="text"   id="saleprice1" value="370" size="3" /></td>
    <td align="center"><input name="count" type="text" id="count2" onChange="sum(this)" value="0" size="3" /></td>
    <td align="center"><input name="total" type="text" disabled="disabled" id="total" value="0" size="4" /></td>
    <td align="center">&nbsp;</td>
    </tr>
      <tr>
        <td align="center">&nbsp;</td>
        <td align="center">&nbsp;</td>
        <td align="center">&nbsp;</td>
        <td align="center">total:
          <input name="alltotal" type="text" disabled="disabled" id="alltotal" size="10" /></td>
      </tr>
    </table>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
      init();
      //初始化
      function init(){
      for (var i=0; i<document.getElementsByName("count").length; i++){
      sum(document.getElementsByName("count")[i]);
      }
      all();
      }
      function sum(obj){
      var pri = obj.parentElement.previousSibling.childNodes[0].value;
      var tot = obj.parentElement.nextSibling.childNodes[0];
      tot.value = parseFloat(pri) * parseInt(obj.value,10);
      all();
      }
      //算总价
      function all() {
      var alltot = 0;
      for (var i=0; i<document.getElementsByName("total").length; i++){
      alltot += parseFloat(document.getElementsByName("total")[i].value);
      }
      document.getElementById("alltotal").value = alltot;
      }
    //-->
      </SCRIPT>
      

  4.   

    document.getElementById("alltotal").value = alltot;
    这句有问题,firefox下这句报这个错
    document.getElementById("alltotal") is null
    楼主是不是少一个input里的id为alltotal啊?
      

  5.   

    完整代码里有,您测试下,有id为alltotal的input的
      

  6.   

    您把代码重新写了,兼容Firefox啊,用作单个交易没问题,就是用在购物车了的,多个产品,多种价格和数量...数组就不知道怎么搞了
      

  7.   


    是很烦啊,但是这个世界是复杂多样滴,老外用的多是FIrefox,它跑的快。
      

  8.   

    是这两句有问题
    var pri = obj.parentElement.previousSibling.childNodes[0].value;
    var tot = obj.parentElement.nextSibling.childNodes[0];
    IE下这个可以,但是firefox下不认识parentElement以及previousSibling等
    firefox下必须这样
    var pri = obj.parentNode.previousElementSibling.childNodes[0].value;
    var tot = obj.parentNode.nextElementSibling.childNodes[0];哎,浏览器的兼容,搞的人都无语
      

  9.   


    哥,是滴,这样firefox成功了,可IE里面好像又不行了。搞那么多浏览器,是真的无语啊,苦了大家了.
      

  10.   

    现在只能先判断浏览器类型再执行相对应语句了,
    多谢诸位,尤其感谢“狗熊丫丫”帮忙!
    Many THKS!~