js 对表格进行各种操作

//一个对HTML表格进行动态增删改的例子.
<table id="t" οnkeyup="sum(this)" οnclick="setPos(this)" width="500" border="1">
    <tbody>
        <tr>
            <td>
            <div contenteditable="true">项目部门</div>
            </td>
            <td>
            <div contenteditable="true">部门1</div>
            </td>
            <td>
            <div contenteditable="true">部门2</div>
            </td>
            <td>
            <div contenteditable="true">部门3</div>
            </td>
            <td>
            <div contenteditable="true">统计</div>
            </td>
        </tr>
        <tr>
            <td>
            <div contenteditable="true">货物1</div>
            </td>
            <td>
            <div contenteditable="true">0</div>
            </td>
            <td>
            <div contenteditable="true">0</div>
            </td>
            <td>
            <div contenteditable="true">0</div>
            </td>
            <td>
            <div>0</div>
            </td>
        </tr>
        <tr>
            <td>
            <div contenteditable="true">货物2</div>
            </td>
            <td>
            <div contenteditable="true">0</div>
            </td>
            <td>
            <div contenteditable="true">0</div>
            </td>
            <td>
            <div contenteditable="true">0</div>
            </td>
            <td>
            <div>0</div>
            </td>
        </tr>
        <tr>
            <td>
            <div contenteditable="true">货物3</div>
            </td>
            <td>
            <div contenteditable="true">0</div>
            </td>
            <td>
            <div contenteditable="true">0</div>
            </td>
            <td>
            <div contenteditable="true">0</div>
            </td>
            <td>
            <div>0</div>
            </td>
        </tr>
        <tr>
            <td>
            <div contenteditable="true">货物4</div>
            </td>
            <td>
            <div contenteditable="true">0</div>
            </td>
            <td>
            <div contenteditable="true">0</div>
            </td>
            <td>
            <div contenteditable="true">0</div>
            </td>
            <td>
            <div>0</div>
            </td>
        </tr>
        <tr>
            <td>
            <div contenteditable="true">货物5</div>
            </td>
            <td>
            <div contenteditable="true">0</div>
            </td>
            <td>
            <div contenteditable="true">0</div>
            </td>
            <td>
            <div contenteditable="true">0</div>
            </td>
            <td>
            <div>0</div>
            </td>
        </tr>
        <tr>
            <td>
            <div contenteditable="true">总计</div>
            </td>
            <td>
            <div>0</div>
            </td>
            <td>
            <div>0</div>
            </td>
            <td>
            <div>0</div>
            </td>
            <td>
            <div>0</div>
            </td>
        </tr>
    </tbody>
</table>
<input οnclick="insertRow(document.all.t)" type="button" value="加一行" /> <input οnclick="insertCell(document.all.t)" type="button" value="加一列" /> <input οnclick="deleteRow(document.all.t)" type="button" value="删除行" /> <input οnclick="deleteCell(document.all.t)" type="button" value="删除列" /> <input οnclick="ascRow(document.all.t)" type="button" value="正序排列" /> <input οnclick="descRow(document.all.t)" type="button" value="反序排列" /> <br /><input οnclick="ascCell(document.all.t)" type="button" value="横向正序排列" /> <input οnclick="descCell(document.all.t)" type="button" value="横向反序排列" /> <input οnclick="getSum(document.all.t,'total')" type="button" value="全部数据统计" /> <input name="total" value="0" /> <SCRIPT LANGUAGE="JavaScript">
<!--
var currRow="0";
var currCell="0";
function getSum(obj,objName){
var sum=0;
    for(var i=1;i<obj.rows.length-1;i++){
        for(var j=1;j<obj.rows[i].cells.length;j++){
           sum+=parseInt(obj.rows[i].cells[j].innerText);
  }
}
document.getElementsByName(objName)[0].value=sum;
}

//正序排列
function ascCell(obj){
if(currCell>=1&&currRow>=1){
  var len=obj.rows[0].cells.length;
  for(var j=0;j<len;j++){
   var order=0;
            for(var i=1;i<len-2;i++){
                 if(parseInt(obj.rows[currRow].cells[i].innerText)>parseInt(obj.rows[currRow].cells[i+1].innerText)){
                      for(var k=0;k<obj.rows.length;k++){
                           var tmp=obj.rows[k].cells[i].innerHTML;
         obj.rows[k].cells[i].innerHTML=obj.rows[k].cells[i+1].innerHTML;
                           obj.rows[k].cells[i+1].innerHTML=tmp;
       }
          order++;
        }
         }
   len--;
   if(order==0){
               break;
   }
  }
}
clear();
}

//反序排列
function descCell(obj){
if(currCell>=1&&currRow>=1){
  var len=obj.rows[0].cells.length;
  for(var j=0;j<len;j++){
   var order=0;
            for(var i=1;i<len-2;i++){
                 if(parseInt(obj.rows[currRow].cells[i].innerText)<parseInt(obj.rows[currRow].cells[i+1].innerText)){
                      for(var k=0;k<obj.rows.length;k++){
                           var tmp=obj.rows[k].cells[i].innerHTML;
         obj.rows[k].cells[i].innerHTML=obj.rows[k].cells[i+1].innerHTML;
                           obj.rows[k].cells[i+1].innerHTML=tmp;
       }
          order++;
        }
         }
   len--;
   if(order==0){
               break;
   }
  }
}
clear();
}

//正序排行
function ascRow(obj){
if(currCell>=1){
  var rows=obj.rows;
  var len=rows.length-2;
  for(var j=0;j<=rows.length-2;j++){
   var order=0;
            for(var i=1;i<len;i++){
                 if(parseInt(rows[i].cells[currCell].innerText)>parseInt(rows[i+1].cells[currCell].innerText)){
                      obj.moveRow(i,i+1);
          order++;
        }
         }
   len--;
   if(order==0){
               break;
   }
  }
}
clear();
}

//反序排行
function descRow(obj){
if(currCell>=1){
  var rows=obj.rows;
  var len=rows.length-2;
  for(var j=0;j<rows.length-2;j++){
   var order=0;
            for(var i=1;i<len;i++){
                 if(parseInt(rows[i].cells[currCell].innerText)<parseInt(rows[i+1].cells[currCell].innerText)){
                      obj.moveRow(i,i+1);
          order++;
        }
         }
   len--;
   if(order==0){
               break;
   }
  }
}
clear();
}

//删除行
function deleteRow(obj){
var rows=obj.rows.length;
if(currRow>=1&&currRow<rows-1){
        obj.deleteRow(currRow);
}
clear();
averCol(obj);
}

//删除列
function deleteCell(obj){
   if(currCell>=1&&currCell<obj.rows[0].cells.length-1){
       for(var i=0;i<obj.rows.length;i++){
           obj.rows[i].deleteCell(currCell);
    }
   }
   clear();
   averCol(obj);
}


function averCol(obj){
   var wh=obj.width;
   var cells=obj.rows[0].cells;
   for(var i=0;i<cells.length;i++){
        cells[i].width=Math.ceil(wh/cells.length);
   }
}
function insertRow(obj){
  if(currRow>=0&&currRow<obj.rows.length-1){
          var maxCell=obj.rows[0].cells.length;
          obj.insertRow(currRow+1);
          for(var i=0;i<maxCell;i++){
               obj.rows[currRow+1].insertCell(i);
            obj.rows[currRow+1].cells[i].innerHTML="<div contentEditable>0</div>";
          }
    clear();
    averCol(obj);
    chnBgcolor(obj,currRow,"ffffff");
  }
}
function insertCell(obj){
   if(currCell&&currCell!=obj.rows[0].cells.length-1){
        for(var i=0;i<obj.rows.length;i++){
            obj.rows[i].insertCell(currCell+1);
            obj.rows[i].cells[currCell+1].innerHTML="<div contentEditable>0</div>";
       }
       clear();
       averCol(obj);
    chnBgcolor(obj,currRow,"ffffff");
   }
}
function check(obj){
    var k=parseInt(obj.innerText);
if(isNaN(k)){
    obj.childNodes[0].innerText=0;
    return 0;
}
else{
    obj.childNodes[0].innerText=k;
       return k;
}
}
function sum(obj){
    var o=event.srcElement;
var total=0;
var tindex=obj.rows.length-1;
if(o.parentElement.tagName=="TD"&&o.parentElement.cellIndex>=1&&o.parentElement.parentElement.rowIndex>=1){
     var index=o.parentElement.cellIndex;
  var pindex=o.parentElement.parentElement.rowIndex;
        for(var i=1;i<tindex;i++){
             var num=check(obj.rows[i].cells[index]);
    total=parseInt(total)+num;
  }
  var total1=0;
  for(i=1;i<obj.rows[pindex].cells.length-1;i++){
              total1+=check(obj.rows[pindex].cells[i]);
  }
  obj.rows[pindex].cells(obj.rows[pindex].cells.length-1).innerText=total1;
  obj.rows[tindex].cells[index].innerText=total;
  obj.rows[tindex].cells(obj.rows[0].cells.length-1).innerText=addAll(obj);
  }
  setPos(obj);
}
function chnBgcolor(obj,index,color){
    for(var i=0;i<obj.rows.length;i++){
         if(i==index){
             obj.rows[i].bgColor=color;
   }
   else{
             obj.rows[i].bgColor="ffffff";
   }
}
}
function setPos(obj){
   var o=event.srcElement;
   if(o.tagName=="DIV"){
       currRow=o.parentElement.parentElement.rowIndex;
       currCell=o.parentElement.cellIndex;
    chnBgcolor(obj,currRow,"dedede");
   }
   else if(o.tagName=="TD"){
       currRow=o.parentElement.rowIndex;
       currCell=o.cellIndex;
   }
   else{
       currRow=obj.rows.length-1;
    currCeil=obj.rows[0].cells.length-1;
   }
}
function clear(){
   currRow=0;
   currCell=0;
}
function addAll(obj){
   var total=0;
   for(var i=1;i<obj.rows[0].cells.length-1;i++){
         total+=parseInt(obj.rows[obj.rows.length-1].cells[i].innerText);
   }
   return total;
}
//-->
</SCRIPT>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScript可以通过DOM操作来实现对表格的增删改查操作。下面是一些常用的表格操作方法: 1. 获取表格对象 可以通过getElementById()或querySelector()等方法获取到表格对象,例如: ```javascript var table = document.getElementById("myTable"); ``` 2. 获取表格的行和单元格 可以使用表格对象的rows和cells属性来获取表格的行和单元格,例如: ```javascript var rows = table.rows; // 获取表格的所有行 var cells = rows[0].cells; // 获取第一行的所有单元格 ``` 3. 添加行和单元格 可以使用insertRow()和insertCell()方法来添加行和单元格,例如: ```javascript var row = table.insertRow(); // 在表格末尾添加一行 var cell1 = row.insertCell(); // 在行末尾添加一个单元格 cell1.innerHTML = "Cell 1"; // 设置单元格内容 var cell2 = row.insertCell(); // 在行末尾添加一个单元格 cell2.innerHTML = "Cell 2"; // 设置单元格内容 ``` 4. 删除行和单元格 可以使用deleteRow()和deleteCell()方法来删除行和单元格,例如: ```javascript table.deleteRow(0); // 删除第一行 rows[0].deleteCell(0); // 删除第一行的第一个单元格 ``` 5. 修改单元格内容 可以直接修改单元格的innerHTML属性来修改单元格内容,例如: ```javascript cells[0].innerHTML = "New Content"; // 修改第一个单元格的内容 ``` 6. 获取单元格内容 可以使用单元格的innerHTML属性来获取单元格内容,例如: ```javascript var content = cells[0].innerHTML; // 获取第一个单元格的内容 ``` 以上是一些常用的表格操作方法,可以根据具体需求进行使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值