当前位置: 代码迷 >> Web前端 >> Jquery-可编者的表格
  详细解决方案

Jquery-可编者的表格

热度:512   发布时间:2012-09-21 15:47:26.0
Jquery-可编辑的表格

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Power Table</title>
<style>
body{
 FONT-SIZE: 9pt; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px;
}
input {
 FONT-SIZE: 9pt; height: 15pt; width:50px; cursor: default;
}
table{
 font-size: 9pt;
 word-break:break-all;
 cursor: default;
 BORDER: black 1px solid;
 background-color:#eeeecc;
 border-collapse:collapse;
 border-Color:#999999;
 align:center;
}
</style>
<script language="JavaScript1.2">
/*
 This following code are designed and writen by Windy_sk <seasonx@163.net>
 You can use it freely, but u must held all the copyright items!
*/

var Main_Tab = null;
var cur_row = null;
var cur_col = null;
var cur_cell = null;
var Org_con = "";
var sort_col = null;

var show_col = false;
var charMode = 1;
var act_bgc = "#BEC5DE";
var act_fc = "black";
var cur_bgc = "#ccffcc";
var cur_fc = "black";

function init(){
 cur_row   = null;
 cur_col   = null;
 cur_cell  = null;
 sort_col  = null;
 Main_Tab   = PowerTable;
 read_def(Main_Tab)
 Main_Tab.onmouseover = overIt;
 Main_Tab.onmouseout = outIt;
 Main_Tab.onclick = clickIt;
 Main_Tab.ondblclick = dblclickIt;
 Org_con   = Main_Tab.outerHTML;
 
 arrowUp = document.createElement("SPAN");
 arrowUp.innerHTML = "5";
 arrowUp.style.cssText  = "PADDING-RIGHT: 0px; MARGIN-TOP: -3px; PADDING-LEFT: 0px; FONT-SIZE: 10px; MARGIN-BOTTOM: 2px; PADDING-BOTTOM: 2px; OVERFLOW: hidden; WIDTH: 10px; COLOR: blue; PADDING-TOP: 0px; FONT-FAMILY: webdings; HEIGHT: 11px";

 arrowDown = document.createElement("SPAN");
 arrowDown.innerHTML = "6";
 arrowDown.style.cssText = "PADDING-RIGHT: 0px; MARGIN-TOP: -3px; PADDING-LEFT: 0px; FONT-SIZE: 10px; MARGIN-BOTTOM: 2px; PADDING-BOTTOM: 2px; OVERFLOW: hidden; WIDTH: 10px; COLOR: blue; PADDING-TOP: 0px; FONT-FAMILY: webdings; HEIGHT: 11px";
}

function window.onload(){
 init();
 
 drag = document.createElement("DIV");
 drag.innerHTML  = "";
 drag.style.textAlign  = "center";
 drag.style.position  = "absolute";
 drag.style.cursor  = "hand";
 drag.style.border  = "1 solid black";
 drag.style.display  = "none";
 drag.style.zIndex  = "999";
 
 document.body.insertBefore(drag);
 setInterval("judge_move()",100);
 setInterval("showContent.value=Main_Tab.innerHTML;monitor.value='cur_row: '+cur_row+'; cur_col: '+cur_col + '; sort_col: ' +sort_col",1000);

 sel_Mode.selectedIndex=charMode;
}

function judge_move(){
 move[0].disabled=(cur_row == null || cur_row<=1);
 move[1].disabled=(cur_row == null || cur_row==Main_Tab.rows.length-1 || cur_row == 0);
 move[2].disabled=(cur_col == null || cur_col==0);
 move[3].disabled=(cur_col == null || cur_col==Main_Tab.rows[0].cells.length-1);
}

document.onselectstart = function(){return false;}

document.onmouseup = drag_end;

function clear_color(){
 the_table=Main_Tab;
 if(cur_col!=null){
  for(i=0;i<the_table.rows.length;i++){
   with(the_table.rows[i].cells[cur_col]){
    style.backgroundColor=oBgc;
    style.color=oFc;
   }
  }
 }
 if(cur_row!=null){
  for(i=0;i<the_table.rows[cur_row].cells.length;i++){
   with(the_table.rows[cur_row].cells[i]){
    style.backgroundColor=oBgc;
    style.color=oFc;
   }
  }
 }
 if(cur_cell!=null){
  cur_cell.children[0].contentEditable = false;
  with(cur_cell.children[0].runtimeStyle){
   borderLeft=borderTop="";
   borderRight=borderBottom="";
   backgroundColor="";
   paddingLeft="";
   textAlign="";
  }
 }
}

function document.onclick(){
 window.status = "";
 clear_color();
 cur_row  = null;
 cur_col  = null;
 cur_cell = null;
}

function read_def(the_table){
 for(var i=0;i<the_table.rows.length;i++){
  for(var j=0;j<the_table.rows[i].cells.length;j++){
   with(the_table.rows[i]){
    cells[j].oBgc = cells[j].currentStyle.backgroundColor;
    cells[j].oFc  = cells[j].currentStyle.color;
    if(i==0){
     cells[j].onmousedown = drag_start;
     cells[j].onmouseup = drag_end;
    }
   }
  }
 }
}

function get_Element(the_ele,the_tag){
 the_tag = the_tag.toLowerCase();
 if(the_ele.tagName.toLowerCase()==the_tag)return the_ele;
 while(the_ele=the_ele.offsetParent){
  if(the_ele.tagName.toLowerCase()==the_tag)return the_ele;
 }
 return(null);
}

var dragStart  = false;
var dragColStart = null;
var dragColEnd  = null;

function drag_start(){
 var the_td = get_Element(event.srcElement,"td");
 if(the_td==null) return;
 dragStart = true;
 dragColStart = the_td.cellIndex;
 drag.style.width = the_td.offsetWidth;
 drag.style.height = the_td.offsetHeight;
 function document.onmousemove(){
  drag.style.display = "";
  drag.style.top  = event.y - drag.offsetHeight/2;
  drag.style.left  = event.x - drag.offsetWidth/2;
  for(var i=0;i<Main_Tab.rows[0].cells.length;i++){
   with(Main_Tab.rows[0].cells[i]){
    if((event.y>offsetTop+parseInt(document.body.currentStyle.marginTop) && event.y<offsetTop+offsetHeight+parseInt(document.body.currentStyle.marginTop)) && (event.x>offsetLeft+parseInt(document.body.currentStyle.marginLeft) && event.x<offsetLeft+offsetWidth+parseInt(document.body.currentStyle.marginLeft))){
     runtimeStyle.backgroundColor=act_bgc;
     dragColEnd=cellIndex;
    }else{
     runtimeStyle.backgroundColor="";
    }
   }
  }
  if(!(event.y>Main_Tab.rows[0].offsetTop+parseInt(document.body.currentStyle.marginTop) && event.y<Main_Tab.rows[0].offsetTop+Main_Tab.rows[0].offsetHeight+parseInt(document.body.currentStyle.marginTop))) dragColEnd=null;
 }
 drag.innerHTML = the_td.innerHTML;
 drag.style.backgroundColor = the_td.oBgc;
 drag.style.color = the_td.oFc;
}

function drag_end(){
 dragStart = false;
 drag.style.display="none";
 drag.innerHTML = "";
 drag.style.width = 0;
 drag.style.height = 0;
 for(var i=0;i<Main_Tab.rows[0].cells.length;i++){
  Main_Tab.rows[0].cells[i].runtimeStyle.backgroundColor="";
 }
 if(dragColStart!=null && dragColEnd!=null && dragColStart!=dragColEnd){
  change_col(Main_Tab,dragColStart,dragColEnd);
  if(dragColStart==sort_col)sort_col=dragColEnd;
  else if(dragColEnd==sort_col)sort_col=dragColStart;
  document.onclick();
 }
 dragColStart = null;
 dragColEnd = null;
 document.onmousemove=null;
}

function clickIt(){
 event.cancelBubble=true;
 var the_obj = event.srcElement;
 var i = 0 ,j = 0;
 if(cur_cell!=null && cur_row!=0){
  cur_cell.children[0].contentEditable = false;
  with(cur_cell.children[0].runtimeStyle){
   borderLeft=borderTop="";
   borderRight=borderBottom="";
   backgroundColor="";
   paddingLeft="";
   textAlign="";
  }
 }
 if(the_obj.tagName.toLowerCase() != "table" && the_obj.tagName.toLowerCase() != "tbody" && the_obj.tagName.toLowerCase() != "tr"){
  var the_td = get_Element(the_obj,"td");
  if(the_td==null) return;
  var the_tr = the_td.parentElement;
  var the_table = get_Element(the_td,"table");
  var i   = 0;
  clear_color();
  cur_row = the_tr.rowIndex;
  cur_col = the_td.cellIndex;
  if(cur_row!=0){
   for(i=0;i<the_tr.cells.length;i++){
    with(the_tr.cells[i]){
     style.backgroundColor=cur_bgc;
     style.color=cur_fc;
    }
   }
  }else{
   if(show_col){
    for(i=1;i<the_table.rows.length;i++){
     with(the_table.rows[i].cells[cur_col]){
      style.backgroundColor=cur_bgc;
      style.color=cur_fc;
     }
    }
   }
   
   the_td.mode = !the_td.mode;
   if(sort_col!=null){
    with(the_table.rows[0].cells[sort_col])
     removeChild(lastChild);
   }
   with(the_table.rows[0].cells[cur_col])
    appendChild(the_td.mode?arrowUp:arrowDown);
   sort_tab(the_table,cur_col,the_td.mode);
   sort_col=cur_col;
  }
 }
}

function dblclickIt(){
 event.cancelBubble=true;
 if(cur_row!=0){
  var the_obj = event.srcElement;
  if(the_obj.tagName.toLowerCase() != "table" && the_obj.tagName.toLowerCase() != "tbody" && the_obj.tagName.toLowerCase() != "tr"){
   var the_td = get_Element(the_obj,"td");
   if(the_td==null) return;
   cur_cell = the_td;
   if(the_td.children.length!=1)
    the_td.innerHTML="<div>" + the_td.innerHTML + "</div>";
   else if(the_td.children.length==1 && the_td.children[0].tagName.toLowerCase()!="div")
    the_td.innerHTML="<div>" + the_td.innerHTML + "</div>";
   cur_cell.children[0].contentEditable = true;
   with(cur_cell.children[0].runtimeStyle){
    borderRight=borderBottom="buttonhighlight 1px solid";
    borderLeft=borderTop="black 1px solid";
    backgroundColor="#dddddd";
    paddingLeft="5px";
    //textAlign="center";
   }
  }
 }
}

function overIt(){
 if(dragStart)return;
 var the_obj = event.srcElement;
 var i = 0;
 if(the_obj.tagName.toLowerCase() != "table"){
  var the_td = get_Element(the_obj,"td");
  if(the_td==null) return;
  var the_tr = the_td.parentElement;
  var the_table = get_Element(the_td,"table");
  if(the_tr.rowIndex!=0){
   for(i=0;i<the_tr.cells.length;i++){
    with(the_tr.cells[i]){
     runtimeStyle.backgroundColor=act_bgc;
     runtimeStyle.color=act_fc;     
    }
   }
  }else{
   for(i=1;i<the_table.rows.length;i++){
    with(the_table.rows[i].cells(the_td.cellIndex)){
     runtimeStyle.backgroundColor=act_bgc;
     runtimeStyle.color=act_fc;
    }
   }
   if(the_td.mode==undefined)the_td.mode = false;
   the_td.style.cursor=the_td.mode?"n-resize":"s-resize";
  }
 }
}

function outIt(){
 var the_obj = event.srcElement;
 var i=0;
 if(the_obj.tagName.toLowerCase() != "table"){
  var the_td = get_Element(the_obj,"td");
  if(the_td==null) return;
  var the_tr = the_td.parentElement;
  var the_table = get_Element(the_td,"table");
  if(the_tr.rowIndex!=0){
   for(i=0;i<the_tr.cells.length;i++){
    with(the_tr.cells[i]){
     runtimeStyle.backgroundColor='';
     runtimeStyle.color='';    
    }
   }
  }else{
   var the_table=the_tr.parentElement.parentElement;
   for(i=0;i<the_table.rows.length;i++){
    with(the_table.rows[i].cells(the_td.cellIndex)){
     runtimeStyle.backgroundColor='';
     runtimeStyle.color='';
    }
   }
  }
 }
}

function judge_CN(char1,char2,mode){
 var charSet=charMode?charBHStr:charPYStr;
 for(var n=0;n<(char1.length>char2.length?char1.length:char2.length);n++){
  if(char1.charAt(n)!=char2.charAt(n)){
   if(mode) return(charSet.indexOf(char1.charAt(n))>charSet.indexOf(char2.charAt(n))?1:-1);
   else  return(charSet.indexOf(char1.charAt(n))<charSet.indexOf(char2.charAt(n))?1:-1);
   break;
  }
 }
 return(0);
}

function sort_tab(the_tab,col,mode){
 var tab_arr = new Array();
 var i;
 var start=new Date;
 for(i=1;i<the_tab.rows.length;i++){
  tab_arr.push(new Array(the_tab.rows[i].cells[col].innerText.toLowerCase(),the_tab.rows[i]));
 }
 function SortArr(mode) {
  return function (arr1, arr2){
   var flag;
   var a,b;
   a = arr1[0];
   b = arr2[0];
   if(/^(\+|-)?\d+($|\.\d+$)/.test(a) && /^(\+|-)?\d+($|\.\d+$)/.test(b)){
    a=eval(a);
    b=eval(b);
    flag=mode?(a>b?1:(a<b?-1:0)):(a<b?1:(a>b?-1:0));
   }else{
    a=a.toString();
    b=b.toString();
    if(a.charCodeAt(0)>=19968 && b.charCodeAt(0)>=19968){
     flag = judge_CN(a,b,mode);
    }else{
     flag=mode?(a>b?1:(a<b?-1:0)):(a<b?1:(a>b?-1:0));
    }
   }
   return flag;
  };
 }
 tab_arr.sort(SortArr(mode));
 
 for(i=0;i<tab_arr.length;i++){
  the_tab.lastChild.appendChild(tab_arr[i][1]);
 }
 
/*
 for(i=0;i<tab_arr.length;i++){
  the_tab.rows[i+1].swapNode(tab_arr[i][1]);
 }
 
====================================================================================
// tab_arr.push(new Array(the_tab.rows[i].cells[col].innerText.toLowerCase(),i));
 
 for(i=0;i<tab_arr.length;i++){
  the_tab.insertRow(-1);
  the_tab.rows[the_tab.rows.length-1].style.display="none";
  change_row(the_tab,tab_arr[i][1],the_tab.rows.length-1);
 }
 for(i=0;i<tab_arr.length;i++){
  the_table.deleteRow(1);
 }
 
====================================================================================

 tab_arr=(new Array(new Array(0,0))).concat(tab_arr);
 var temp = 1;
 var change_line=1;
 for(i=1;i<tab_arr.length;i++){
  //alert(tab_arr[temp][1] + ' - ' + temp)
  if(tab_arr[temp][1] != change_line){
   change_row(the_tab,tab_arr[temp][1],temp);
   tab_arr[temp][2] = true;
   temp = tab_arr[temp][1];
  }else{
   alert(change_line);
  }
 }
*/
 window.status = " (Time spent: " + (new Date - start) + "ms)";
}

function change_row(the_tab,line1,line2){
 the_tab.rows[line1].swapNode(the_tab.rows[line2])
}

function change_col(the_tab,line1,line2){
 for(var i=0;i<the_tab.rows.length;i++)
  the_tab.rows[i].cells[line1].swapNode(the_tab.rows[i].cells[line2]);
}

function Move_up(the_table){
 event.cancelBubble=true;
 if(cur_row==null || cur_row<=1)return;
 change_row(the_table,cur_row,--cur_row);
}

function Move_down(the_table){
 event.cancelBubble=true;
 if(cur_row==null || cur_row==the_table.rows.length-1 || cur_row==0)return;
 change_row(the_table,cur_row,++cur_row);
}

function Move_left(the_table){
 event.cancelBubble=true;
 if(cur_col==null || cur_col==0)return;
 change_col(the_table,cur_col,--cur_col);
 if(cur_col==sort_col)sort_col=cur_col+1;
 else if(cur_col+1==sort_col)sort_col=cur_col;
}

function Move_right(the_table){
 event.cancelBubble=true;
 if(cur_col==null || cur_col==the_table.rows[0].cells.length-1)return;
 change_col(the_table,cur_col,++cur_col);
 if(cur_col==sort_col)sort_col=cur_col-1;
 else if(cur_col-1==sort_col)sort_col=cur_col;
}

function add_row(the_table) {
 event.cancelBubble=true;
 var the_row,the_cell;
 the_row = cur_row==null?-1:(cur_row+1);
 clear_color();
 var newrow=the_table.insertRow(the_row);
 for (var i=0;i<the_table.rows[0].cells.length;i++) {
  the_cell=newrow.insertCell(i);
  the_cell.innerText="NewRow_" + the_cell.parentElement.rowIndex;
 }
 read_def(the_table);
}

function del_row(the_table) {
 if(the_table.rows.length==1) return;
 var the_row;
 the_row = (cur_row==null || cur_row==0)?-1:cur_row;
 the_table.deleteRow(the_row);
 cur_row = null;
 cur_cell=null;
}

function add_col(the_table) {
 event.cancelBubble=true;
 var the_col,i,the_cell;
 the_col = cur_col==null?-1:(cur_col+1);
 var the_title=prompt("Please input the title: ","Untitled");
 if(the_title==null)return;
 if(the_col!=-1 && the_col<=sort_col && sort_col!=null)sort_col++;
 the_title=the_title==""?"Untitled":the_title
 clear_color();
 for(var i=0;i<the_table.rows.length;i++){
  the_cell=the_table.rows[i].insertCell(the_col);
  the_cell.innerText=i==0?the_title:("NewCol_" + the_cell.cellIndex);
 }
 read_def(the_table);
}

function del_col(the_table) {
 if(the_table.rows[0].cells.length==1) return;
 var the_col,the_cell;
 the_col = cur_col==null?(the_table.rows[0].cells.length-1):cur_col;
 if(the_col!=-1 && the_col<sort_col && sort_col!=null)sort_col--;
 else if(the_col==sort_col)sort_col=null;
 for(var i=0;i<the_table.rows.length;i++) the_table.rows[i].deleteCell(the_col);
 cur_col = null;
 cur_cell=null;
}

function res_tab(the_table){
 the_table.outerHTML=Org_con;
 init();
}

function exp_tab(the_table){
 var the_content="";
 document.onclick();
 the_content=the_table.outerHTML;
 the_content=the_content.replace(/ style=\"[^\"]*\"/g,"");
 the_content=the_content.replace(/ mode=\"(false|true)"/g,"");
 the_content=the_content.replace(/ oBgc=\"[\w#\d]*\"/g,"");
 the_content=the_content.replace(/ oFc=\"[\w#\d]*\"/g,"");
 the_content=the_content.replace(/<span>(5|6)<\/span>/gi,"");
 the_content=the_content.replace(/<DIV contentEditable=false>(.*)<\/DIV>/ig,"$1");
 the_content="<style>table{font-size: 9pt;word-break:break-all;cursor: default;BORDER: black 1px solid;background-color:#eeeecc;border-collapse:collapse;border-Color:#999999;align:center;}</style>\n"+the_content;
 var newwin=window.open("about:blank","_blank","");
 newwin.document.open();
 newwin.document.write(the_content);
 newwin.document.close();
 newwin=null;
}
</script>
<TABLE width=100% border=1 cellSpacing=0 cellPadding=2 id="PowerTable">
<TR align=middle bgColor=#ffcc00>
<TD>First Name</TD>
<TD>Last Name</TD>
<TD>Team</TD>
<TD>Engine</TD>
<TD>Tyres</TD>
<TD>Fastest Lap</TD>
<TD>国家</TD></TR>
<TR>
<TD>Michael</TD>
<TD>Schumacher</TD>
<TD>Ferrari</TD>
<TD>Ferrari</TD>
<TD>Bridgestone</TD>
<TD>1.15.872</TD>
<TD>德国</TD></TR>
<TR>
<TD>Rubens</TD>
<TD>Barrichello</TD>
<TD>Ferrari</TD>
<TD>Ferrari</TD>
<TD>Bridgestone</TD>
<TD>1.16.760</TD>
<TD>法国</TD></TR>
<TR>
<TD>Ralph</TD>
<TD>Schumacher</TD>
<TD>Williams</TD>
<TD>BMW</TD>
<TD>Michelin</TD>
<TD>1.16.297</TD>
<TD>美国</TD></TR>
<TR>
<TD>Juan-Pablo</TD>
<TD>Montoya</TD>
<TD>Williams</TD>
<TD>BMW</TD>
<TD>Michelin</TD>
<TD>1.17.123</TD>
<TD>柬埔寨</TD></TR>
<TR>
<TD>David</TD>
<TD>Coulthard</TD>
<TD>McLaren</TD>
<TD>Mercedes</TD>
<TD>Bridgestone</TD>
<TD>1.16.423</TD>
<TD>泰国</TD></TR>
<TR>
<TD>Mika</TD>
<TD>Hakkinen</TD>
<TD>McLaren</TD>
<TD>Mercedes</TD>
<TD>Bridgestone</TD>
<TD>1.16.979</TD>
<TD>越南</TD></TR>
<TR>
<TD>Jarno</TD>
<TD>Trulli</TD>
<TD>Jordan</TD>
<TD>Honda</TD>
<TD>Bridgestone</TD>
<TD>1.16.459</TD>
<TD>菲律宾</TD></TR>
<TR>
<TD>Ricardo</TD>
<TD>Zonta</TD>
<TD>Jordan</TD>
<TD>Honda</TD>
<TD>Bridgestone</TD>
<TD>1.17.328</TD>
<TD>英国</TD></TR>
<TR>
<TD>Olivia</TD>
<TD>Panis</TD>
<TD>BAR</TD>
<TD>Honda</TD>
<TD>Bridgestone</TD>
<TD>1.16.771</TD>
<TD>蒙古</TD></TR>
<TR>
<TD>Jacques</TD>
<TD>Villeneuve</TD>
<TD>BAR</TD>
<TD>Honda</TD>
<TD>Bridgestone</TD>
<TD>1.17.035</TD>
<TD>马来西亚</TD></TR>
<TR>
<TD>Kimi</TD>
<TD>Raikkonen</TD>
<TD>Sauber</TD>
<TD>Petronas</TD>
<TD>Bridgestone</TD>
<TD>1.16.875</TD>
<TD>缅甸</TD></TR>
<TR>
<TD>Nick</TD>
<TD>Heidfeld</TD>
<TD>Sauber</TD>
<TD>Petronas</TD>
<TD>Bridgestone</TD>
<TD>1.17.165</TD>
<TD>朝鲜</TD></TR>
<TR>
<TD>Eddie</TD>
<TD>Irvine</TD>
<TD>Jaguar</TD>
<TD>Cosworth</TD>
<TD>Michelin</TD>
<TD>1.18.016</TD>
<TD>中国</TD></TR>
<TR>
<TD>Pedro</TD>
<TD>de la Rosa</TD>
<TD>Jaguar</TD>
<TD>Cosworth</TD>
<TD>Michelin</TD>
<TD>1.18.015</TD>
<TD>俄罗斯</TD></TR>
<TR>
<TD>Hugh</TD>
<TD>Gengine</TD>
<TD>Lotus</TD>
<TD>Renault</TD>
<TD>Michelin</TD>
<TD>1.15.015</TD>
<TD>韩国</TD></TR>
<TR>
<TD>Gloria</TD>
<TD>Slap</TD>
<TD>Lotus</TD>
<TD>Renault</TD>
<TD>Michelin</TD>
<TD>1.15.012</TD>
<TD>日本</TD></TR>
</TABLE>
<p>
<input type=button value=增加行 onclick=add_row(Main_Tab)>
<input type=button value=增加列 onclick=add_col(Main_Tab)>
<input type=button value=删除行 onclick=del_row(Main_Tab)>
<input type=button value=删除列 onclick=del_col(Main_Tab)>
<input type=button value=重置 onclick=res_tab(Main_Tab)>
<input type=button value=Export  onclick=exp_tab(Main_Tab)>
 ( Move: 
<input type=button id=move value=Up    onclick=Move_up(Main_Tab)>
<input type=button id=move value=Down  onclick=Move_down(Main_Tab)>
<input type=button id=move value=Left  onclick=Move_left(Main_Tab)>
<input type=button id=move value=Right onclick=Move_right(Main_Tab)> )
汉字排序:
<select id=sel_Mode onchange="charMode=this.selectedIndex">
<option>拼音
<option>笔画
</select>
<span style="cursor:hand; color: red; text-Decoration: underline" onclick="if(detail.style.display==''){detail.style.display='none';this.innerText='Show Detail'}else{detail.style.display='';this.innerText='Hide Detail'}">Show Detail</span>
</p>
<div id=detail style="display:none">
<input type=text id=monitor size=30 style="width:200px">
<br>
<textarea id=showContent cols=100 rows=20></textarea>
</div>

 

-------------------------------------------------------------------

 

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>MyHtml.html</title>
 
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
   
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
 <script type="text/javascript">
  var TempValue = "";     //全局变量临时保存当前编辑单元格的值
var CurElement = null;  //当前节点   
  
//当前编辑单元格
var InputControl = '<input border="0" style="width:100;height:20; overflow:hidden;" type="text" onblur="mouseBlur(event.srcElement)" onkeydown="saveValue(event.srcElement)"/>';   
 
//捕获当前Element并判断是否为TD标签
function editTD(){   
   if(CurElement.tagName == "TD"){   
      var srcE=event.srcElement;   
      var mValue = srcE.innerHTML;   
      srcE.innerHTML =InputControl;   
      srcE.childNodes[0].value = mValue;   
      srcE.childNodes[0].focus();   
      srcE.childNodes[0].select();   
   }   
}   
  
//保存编辑的值,回车移动到下一个TD  
function saveValue(pElement){   
   if(event.keyCode == 13){     
      TempValue = pElement.value;//记录<td>值   
      var Parent = pElement.parentNode;   
      var p=null;   
      pElement.parentNode.innerHTML=TempValue;   
      var TempValue = "";   
      if(Parent.nextSibling != null){   
          p=Parent.nextSibling;   
          TempValue = p.innerHTML;   
          p.innerHTML = InputControl;   
          p.childNodes[0].value = TempValue;   
          p.childNodes[0].focus();   
          p.childNodes[0].select();   
     }   
     else if(Parent.parentNode.nextSibling != null){   
          p=Parent.parentNode.nextSibling.childNodes;   
          if(p != null){   
              TempValue = p[0].innerHTML;   
              p[0].innerHTML = InputControl;   
              p[0].childNodes[0].value = TempValue;   
              p[0].childNodes[0].focus();   
              p[0].childNodes[0].select();   
          }   
     }   
     else if(Parent.nextSibling == null && Parent.parentNode.nextSibling == null){   
          TempValue = Parent.innerHTML;   
          Parent.innerHTML = InputControl;   
          Parent.childNodes[0].value = TempValue;   
          Parent.childNodes[0].focus();   
          Parent.childNodes[0].select();   
     }   
   }   
}   
 
//当前编辑单元格失去焦点时触发,更新td的值
function mouseBlur(CurElement){   
   TempValue = CurElement.value;   
   CurElement.parentNode.innerHTML=TempValue;   
}  
  
 </script>
  </head>
 
  <body>
    <table cellpadding="0" cellspacing="0" border="1" width="200" height="90" style=" table-layout:fixed" id="MainTable" onclick="CurElement=event.srcElement;editTD()">
<tr>
  <td>aa</td>
  <td>bb</td>
</tr>   
<tr>
  <td>cc</td>
  <td>dd</td>
</tr>
<tr>
<td>ee</td>
<td>ff</td>
</tr>
</table>
  </body>
</html>

  相关解决方案