document.getElementsByName("c1")[i].innerText+=parseFloat(document.all("b7")[i].innerText)这里的+号是实现加法,但是却成了连接符号怎么避免这种情况啊

解决方案 »

  1.   

    那就加好以后再赋值!L@_@Kvar sum = parseFloat(document.getElementsByName("c1")[i].innerText) + parseFloat(document.all("b7")[i].innerText);
    document.getElementsByName("c1")[i].innerText = sum;
      

  2.   

    document.getElementsByName("c1")[i].innerText+=
    相当于document.getElementsByName("c1")[i].innerText= document.getElementsByName("c1")[i].innerText+ xxx所以就成了连接,而绝对不是你要的parseFloat然后相加,它不会给你parseFloat的!
      

  3.   


    因为列数不固定这里用到了循环比如某个表格 ,结果等于单价1+单价2+单价3 单价1  单价2   单价3     结果
    1      2        3       6
    1      5        7       13
    如果先赋值sum+=xxxx
    因为用到了循环,在第二列的时候结果就是19,(13+6)
      

  4.   

    首先你对“+”符号可能不是特别理解,在数字类型的情况下,这个是用于加法计算的,而在字符串的情况下,这个是用于连接的,而现在你的代码document.getElementsByName("c1")[i].innerText 是字符串类型,而后面虽parseFloat 转换成了数字类型,但是程序还是默认转换成了字符串类型,以匹配你最终=号左边的类型。从而在这里,这个是起到的链接的作用。不知道我这样解释可以不,自己理解是这样的,期待高手指正。
      

  5.   

    是的,我刚才试了,因为sum+我用到了循环,所以后面结果等于前面结果之和再加上自己的,这个方法还是行不通,document.getElementsByName("c1")[i].innerText+=parseFloat(document.all("b7")[i].innerText)
    怎么让连接符号变成加号?
      

  6.   

    lz 真滴不适合干编程,俺已经在 #2 写滴那么清楚了,咋还不明白?!加法的问题已解决了!
    循环是另一个问题,需要 lz 自己思考!要不你把工资给俺,俺把代码给你,哈哈
      

  7.   


    呵呵,俺不是专业的程序员啊,业余的,小弟愚昧,还请各位再指点指点,谢谢这是我的代码for (i=0;i<p.length;i++)   //一共有多少行
    {for (v=1;v<=3;v++)     //假设有三列,id假设都是b1,b2,b3
    {
    document.getElementsByName("c1")[i].innerText+=parseFloat(document.all("b"+v)[i].innerText)}}
    因为document.getElementsByName("c1")[i].innerText是字符类型,加号变成连接符号了,如果改为for (i=0;i<p.length;i++)   //一共有多少行
    {for (v=1;v<=3;v++)     //假设有三列,id假设都是b1,b2,b3
    {
    var sum+=+=parseFloat(document.all("b"+v)[i].innerText)
    document.all(c1)[i].innerText=sum
    }}
    sum的值就是c1所有的值求和了,如第三行的c1的值就变成了document.all(c1)[0].innerText+document.all(c1)[1].innerText+document.all(c1)[2].innerText
      

  8.   

    你想实现什么?看你代码,document.getElementsByName("c1")[i].innerText+=parseFloat(document.all("b"+v)[i].innerText)
    好像也如你所说,最后也是c1的总和吧?
    先说说你想实现什么吧然后再帮你分析!
      

  9.   

    有个表格B1  B2   B3  c1 
    1    2   3   6
    2    3   5   10其中C1的值是通过JS实现的每行的C1的值都等于该行b1+b2+b3
    如果是
    var sum+=parseFloat(document.all("b"+v)[i].innerText)
    document.getElementsByName("c1")[i].innerText = sum那第二行就变成了16,而我希望得到的结果是10
    再复制下我的代码,谢谢各位了,让+号变成加法,而不是连接,同时每行C1的值都等于该行B1+B2+B3for (i=0;i<p.length;i++) //一共有多少行
    {for (v=1;v<=3;v++) //假设有三列,id假设都是b1,b2,b3
    {
    document.getElementsByName("c1")[i].innerText+=parseFloat(document.all("b"+v)[i].innerText)}}
      

  10.   

    for (i=0;i<p.length;i++) //一共有多少行
    {
        var sum = 0;
    for (v=1;v<=3;v++) //假设有三列,id假设都是b1,b2,b3
    {
    sum+=parseFloat(document.all("b"+v)[i].innerText)
    document.getElementsByName("c1")[i].innerText = sum
    }}
    这样就可以了。
      

  11.   

    每次换行的时候,让sum = 0 ,重新算就可以了
      

  12.   

    #11 把问题叙述得很清楚,解法如下:L@_@K
    var rowSum;
    for (var i=0; i < p.length; i++) // p.length 总行数。
    {
        rowSum = 0;
        for (var v = 1; v <= 3; v++) // 假设有三列,id假设都是b1,b2,b3
        {
            rowSum += parseFloat(document.all("b"+v)[i].innerText)
        }
        document.getElementsByName("c1")[i].innerText = rowSum;
    }
      

  13.   

    lz 你这个会有兼容性问题,Firefox不支持 innerText