用JS从一个未知行列的html table(从后台取出的数据生成的table)中拿到某特定列中所有单元格中的值,并且做相加,最后合并这一列,将刚才得到的总值设置在这个合并后的单元格中?请高手交交我,谢谢!

解决方案 »

  1.   

    楼主建议你写出你的html我们才好对症下药
      

  2.   

    写个大致的代码,表达下意思。没开API。部分细节可能有点小问题。例如第2列.var values=[];
    $("table>tr").each(function(index){
      values[index]= $(this).find("td :nth-child(2)").val();
    });
      

  3.   

    我瞎写了一个,你看用不用得上吧。
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    </head><body>
    <table width="500" border="1" cellspacing="0" cellpadding="0" id="aa">
      <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>1</td>
        <td>2</td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>2</td>
        <td>3</td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>3</td>
        <td>4</td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>4</td>
        <td>5</td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>5</td>
        <td>6</td>
      </tr>
    </table>
    <script type="text/javascript">
    (function setTable(index){
    var tableObj = document.getElementById('aa');
    var trs = tableObj.rows;
    var n = parseInt(trs[0].cells[index].innerHTML);
    for(var i=1,len=trs.length; i<len; i++){
    var oTd = trs[i].cells[index];
    n+= parseInt(oTd.innerHTML) || 0;
    oTd.parentNode.removeChild(oTd);
    }
    trs[0].cells[index].innerHTML = n;
    trs[0].cells[index].setAttribute('rowspan',trs.length);
    })(2);
    </script>
    </body>
    </html>
      

  4.   

    用JQUERY的语法写了段,没有测试过,不知对楼主有没帮助
    假设需要第二行
    var index=2
    var line=$('#table').find('tr').eq(index)
    //找到第二行
    var value
    var tds=line.find('td')
    //找到第二行中所有的TD
    for(var i=0;i<tds.length;i++){
        value+=parseInt(tds.eq(i).html());//假设TD中没有其他控件的情况且都是数字
         value+=tds.eq(i).html();          //假设TD中没有其他控件的情况且不都是数字
    }
    var newTd=('<td width=100%></td>')
    line.html(newTd)
    line.find('td').text(value)
      

  5.   


    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>取值并合并</title>
    <script type="text/javascript" src="jquery.js"></script>
    <script type="text/javascript">
    $(function () {
    $("input").click(function () {
    merge(3);//合并第3列
    });
    });
    function merge(cols) { 
    var result = 0;
    $("#tab tr").each(function (i) {//tab是table id
    var td = $(this).find("td:eq(" + (cols - 1) + ")");
    result += eval(td.text());
    if (i != 0) {
    td.remove();
    } else {
    td.attr("rowspan", 5);
    }
    }).end().find("td:eq(" + (cols - 1) + ")").text(result);
    }
    </script>
    </head><body>
    <input type="button" value="合并取值" />
    <table width="500" border="1" cellspacing="0" cellpadding="0" id="tab">
      <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>1</td>
        <td>2</td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>2</td>
        <td>3</td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>3</td>
        <td>4</td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>4</td>
        <td>5</td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>5</td>
        <td>6</td>
      </tr>
    </table>
    </body>
    </html>
      

  6.   


    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>取值并合并</title>
    <script type="text/javascript" src="jquery.js"></script>
    <script type="text/javascript">
    $(function () {
    $("input").click(function () {
    merge(3);//合并第3列
    });
    });
    function merge(cols) { 
    var result = 0;
    var tr = $("#tab tr");
    tr.each(function (i) {//tab是table id
    var td = $(this).find("td:eq(" + (cols - 1) + ")");
    result += eval(td.text());
    if (i != 0) {
    td.remove();
    } else {
    td.attr("rowspan", tr.size());
    }
    }).end().find("td:eq(" + (cols - 1) + ")").text(result);
    }
    </script>
    </head><body>
    <input type="button" value="合并取值" />
    <table width="500" border="1" cellspacing="0" cellpadding="0" id="tab">
      <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>1</td>
        <td>2</td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>2</td>
        <td>3</td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>3</td>
        <td>4</td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>4</td>
        <td>5</td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>5</td>
        <td>6</td>
      </tr>
    </table>
    </body>
    </html>
    这样就更完美了