支持,不错。
加上drag功能更好。

解决方案 »

  1.   

    很不错啊!!!不知道在实际中如何做些应用呢?
    msn:[email protected]交流一下!
      

  2.   

    忘了说了,行移动是用上下前头来控制的 sulone(晓风寒月) 
    “添加”和“删除”的功能,我会尽快加上的.   to 大梅: JK的行移动是怎么样的,代码给我发一下看看效果
      

  3.   


    function onEvent(src){
       oPopup.hide();
       var movedRow=selectRow;
       switch(src.operation){
          case "edit": lastClkTd.click(); break;
          case "refresh": window.location.reload(); break;
          case "addrowup": addNewRow(0); break;
          case "addrowdown": addNewRow(1); break;
          case "delrow": delRow(); break;
          case "moveup": moveUp(movedRow);break;
          case "movedown": moveDown(movedRow);break;
          default: return;
       }
       src.style.backgroundColor="scrollbar"; 
       src.style.color="black";
       curRow=null; 
    }
    function addNewRow(flag){
       var newrow = element.insertRow(selectRow.rowIndex+flag);
       for(var i=0;i<element.rows[0].cells.length;i++){
          var newcell=newrow.insertCell();
          newcell.innerText=" ";
       }
       newrow.click();
    }
    function delRow(){
       element.deleteRow(selectRow.rowIndex);
       selectRow=null;
       pointRow=null;
       lastEdited=null;
       lastClkTd=null;}
    function moveRow(){
       var src=window.event.srcElement;
       if(src.tagName.toUpperCase()=="TD")   src=src.parentElement;
       else return;
       if(pointRow!=null)
          pointRow.style.backgroundColor="#FFFFFF";
       if(src!=selectRow){
          pointRow=src;
          pointRow.style.backgroundColor="#B6D3FC";
       }
    }
    function clickRow(){
       var curTr=null;
       var e=window.event;
       var src=e.srcElement;
       if(src.tagName.toUpperCase()=="TD")   curTr=src.parentElement;
       else return;
       if(curTr==selectRow){
          if(eval(element.rows[0].cells[src.cellIndex].locked)==true){
             alert("该列已被锁定,您不能编辑!");
             return;
          }
          editCell(src); 
          return;
       }
       else { 
          if(editEnd()==false) 
             return;
       }
       chgRowColor(curTr);
    }
    function chgRowColor(curTr){
       if(selectRow!=null){
          selectRow.style.backgroundColor="#FFFFFF";
          selectRow.style.color="#000000";
       }
       selectRow=curTr;
       selectRow.style.backgroundColor="#0000FF";
       selectRow.style.color="#FFFFFF";
       pointRow=null;
    }function cancelMoveRow(){
       var src=window.event.srcElement;
       if(src.tagName.toUpperCase()=="TD")   src=src.parentElement;
       else return;
       if(pointRow!=null)
          pointRow.style.backgroundColor="#FFFFFF";
    }
    function editCell(tdObj){
       if(editEnd()==false) return;
       var tdText=tdObj.innerText;
       tdObj.innerHTML='<input type="text" style="width:100%; background-color:#FFFFEF" value="'+tdText+'">';
       tdObj.children[0].select();
       lastEdited=tdObj;
    }
    function editEnd(){
       if(lastEdited!=null){
          var rs=element.rows;
          var isPrimary=eval(rs[0].cells[lastEdited.cellIndex].primary);
          if(isPrimary==true){
             if(checkInput()==false){
                alert("该列内容不允许重复,请检查并重新输入!");
                lastEdited.children[0].select();
                return false;
             }
          }
          var val=lastEdited.children[0].value;
          lastEdited.innerHTML="";
          lastEdited.innerText=val;
          lastEdited=null;
       }
       return true;
    }function checkInput(){
       var rs=element.rows;
       var ci=lastEdited.cellIndex;
       for(var i=1;i<rs.length;i++){
          if(i!=ci && rs[i].cells[ci].innerText==lastEdited.children[0].value)
             return false;
       }
       return true;
    }function rowUpOrDown(){
       //if(lastEdited!=null) editEnd();
       if(selectRow==null) return;
       if(window.event.srcElement.tagName.toUpperCase()=="INPUT") return;
       var movedRow=selectRow;
       var kc=window.event.keyCode;
       if(kc==38) moveUp(movedRow);
       else if(kc==40) moveDown(movedRow);   else return;
    }
    function moveUp(mtr){
       var ri=mtr.rowIndex;
       if(ri<=1){ alert("已经是第一行,不能再向上移动!"); return; }
       exchangeRow(mtr,-1);
    }
    function moveDown(mtr){
       var ri=mtr.rowIndex;
       if(ri==element.rows.length-1){ alert("已经是最后一行,不能再向下移动!"); return; }
       exchangeRow(mtr,1);
    }
    function exchangeRow(mtr,riFlag){
       var cells=mtr.cells;
       for(var i=0;i<cells.length;i++){
          var td1=cells[i];
          var td2=element.rows[mtr.rowIndex+riFlag].cells[i];
          var str=td1.innerHTML;
          td1.innerHTML=td2.innerHTML;
          td2.innerHTML=str;
       }
       element.rows[mtr.rowIndex+riFlag].cells[0].click();
    }
    </script>
      

  4.   

    学习中,不过好麻烦,经常弹出锁定的提示,而且好像没有保存的功能===============================
        CSDN小助手 是一款脱离浏览器也可以使用csdn论坛的
    软件!
        界面: http://qqwwee.com/
        下载: http://qqwwee.com/csdn.rar 包含源代码
      

  5.   

    报element没定义,除了点击当前行变色外,没看到其它的效果