javascript操作table增加,批量删除,模糊查询,文本框修改(兼容IE,FF)

先看代码:
 
<!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>
     <title></title>
 
    <script type="text/javascript">
         var _OTable_ = null;
         var _oTbody_ = null;
         var _arrSelect_ = new Array;
    
         var _oTempValue_=new Object;
         _oTempValue_["$updateIndex"]=-1;
         var _TheadName_=new Array("姓名","性别","年龄","籍贯","删除否");
         var CELLS_COUNT=_TheadName_.length-1;
       
         String.prototype.trim=function()
         {
              return this.replace(/(^\s*)(\s*$)/g, '');
         }
 
        window.onload = function()
         {
             var $oAdd = document.getElementById("btnAdd");
             $oAdd.onclick = function()
             {
                 var _oCol1_ = document.getElementById("Col1");
                 var _oCol2_ = document.getElementById("Col2");
                 var _oCol3_ = document.getElementById("Col3");
                 var _oCol4_ = document.getElementById("Col4");
 
                if (!_OTable_) //如果不存在表则新建
                 {
                     _OTable_ = document.createElement("table");
                     _OTable_.setAttribute("border", "1");
                     _OTable_.setAttribute("width", "800px");
                     var _Thead_=_OTable_.createTHead();
                     var _TRow_=_Thead_.insertRow(0);
                     for(var _headindex_=0;_headindex_<CELLS_COUNT+1;_headindex_++ )
                     {
                        var _tTh=_TRow_.insertCell(_headindex_);
                        _tTh.appendChild(document.createTextNode(_TheadName_[_headindex_]));
                     }
                     _oTbody_ = document.createElement("tbody");
                     _OTable_.appendChild(_oTbody_);
                     document.getElementById("TableData").appendChild(_OTable_);
                 }
                 if(!_oCol1_.value.trim()){alert("姓名必须填写!"); return;}
               
                 //添加一行
                 var _oRow_ = _oTbody_.insertRow(-1);
 
                //添加5列,四列值,一列选择
                 var _oCell1_ = _oRow_.insertCell(-1);
                 _oCell1_.appendChild(document.createTextNode(_oCol1_.value));
                 var _oCell2_ = _oRow_.insertCell(-1);
                 _oCell2_.appendChild(document.createTextNode(_oCol2_.value));
                 var _oCell3_ = _oRow_.insertCell(-1);
                 _oCell3_.appendChild(document.createTextNode(_oCol3_.value));
                 var _oCell4_ = _oRow_.insertCell(-1);
                 _oCell4_.appendChild(document.createTextNode(_oCol4_.value));
 
                _oCol1_.value = "";
                 _oCol2_.value = "";
                 _oCol3_.value = "";
                 _oCol4_.value = "";
 
                //选择
                 var _oCell5_ = _oRow_.insertCell(4);
                 _oCell5_.setAttribute("style", "width:50px;");
                 var _oCheckBox_ = document.createElement("input");
                 _oCheckBox_.setAttribute("type", "checkbox");
                 _oCell5_.appendChild(_oCheckBox_);
                 _oCheckBox_.onclick = function()
                 {
                     if (_oCheckBox_.checked)
                     {
                         var _rowIndex_ = _oCheckBox_.parentNode.parentNode.rowIndex-1;
                         _arrSelect_.push(_rowIndex_);
                     }
 
                }
 
                _oRow_.ondblclick = function()
                 {
                     var _oPreUpdateIndex_=_oTempValue_["$updateIndex"];
                     var _oPreTempRow_=null;
                     if (parseInt(_oPreUpdateIndex_) != -1) //原先选定行重置
                     {
                     
                       if (!_OTable_ || !_oTbody_) return;
                       _oPreTempRow_= _oTbody_.rows[parseInt(_oPreUpdateIndex_)];
                       var _cancelornot_=false;
                       for(var _cellindex_=0;_cellindex_<CELLS_COUNT;_cellindex_++)
                       {
                          var $attributeNode_=_oPreTempRow_.cells[_cellindex_].firstChild;
                          var $nodedata_=document.all?$attributeNode_.getAttribute("value"):$attributeNode_.value;
                          if($nodedata_!=_oTempValue_["$"+_cellindex_])//与原值比较
                          {
                             _cancelornot_=confirm("你之前的内容作了修改,保存修改吗?");
                             break;
                          }
                       }
                       if(_cancelornot_)
                       {
                           //避免前次提交为空
                           var _firstNode_=_oPreTempRow_.cells[0].firstChild;
                           var $firstnodedata_=_firstNode_.getAttribute("value");
                           if(!$firstnodedata_||!$firstnodedata_.trim()){alert("姓名不能为空,请重新编辑!"); _firstNode_.focus(); return;};
                         
                           for(var _cellindex_=0;_cellindex_<CELLS_COUNT;_cellindex_++)
                           {
                               var _oldNode_=_oPreTempRow_.cells[_cellindex_].firstChild;
                               var $nodedata_=document.all?_oldNode_.getAttribute("value"):_oldNode_.value;
                               var _textnode_=  document.createTextNode($nodedata_);
                               _oPreTempRow_.cells[_cellindex_].replaceChild(_textnode_,_oldNode_);
                               delete _oTempValue_["$"+_cellindex_];
                           }
                       }
                       else
                       {
                          for(var _cellindex_=0;_cellindex_<CELLS_COUNT;_cellindex_++)
                           {
                               var _oldNode_=_oPreTempRow_.cells[_cellindex_].firstChild;
                               var _textnode_=  document.createTextNode(_oTempValue_["$"+_cellindex_]);
                               _oPreTempRow_.cells[_cellindex_].replaceChild(_textnode_,_oldNode_);
                               delete _oTempValue_["$"+_cellindex_];
                           }
                       }
 
                    }
                     _oTempValue_["$updateIndex"] = this.rowIndex-1;
                     //单元格中只有一个文本节点
                     for(var _cellindex_=0;_cellindex_<CELLS_COUNT;_cellindex_++)
                     {
                       var _textbox_=  document.createElement("input");
                       _textbox_.setAttribute("type", "text");
                       var _preNode_=this.cells[_cellindex_].firstChild;
                       _oTempValue_["$"+_cellindex_]=_preNode_.nodeValue; //记录原先的值
                       _textbox_.setAttribute("value",_preNode_.nodeValue);
                   
                       this.cells[_cellindex_].replaceChild(_textbox_ ,_preNode_);
                     }
                 };
             };
 
            //删除
             var $oDelete = document.getElementById("btnDelete");
             $oDelete.onclick = function()
             {
                 if (_arrSelect_.length == 0) { alert("您还没有选择要删除的行."); return; }
 
                if (_OTable_  && _oTbody_)
                 {
                     var _confirmMsg_ = "你确定要删除名字是如下:\n";
                     for (var index = 0, iLen = _arrSelect_.length; index < iLen; index++)
                     {
                         var _deletName_ = _oTbody_.rows[parseInt(_arrSelect_[index])].cells[0].firstChild.nodeValue;
                         _confirmMsg_ = _confirmMsg_.concat(_deletName_ + "\n");
                     }
                     _confirmMsg_ = _confirmMsg_.concat("的信息吗?");
                     if (!confirm(_confirmMsg_)) return;
 
                    for (var index = _arrSelect_.length - 1; index >= 0; index--)
                     {
                         _oTbody_.deleteRow(parseInt(_arrSelect_[index]));
                     }
                 }
                 _arrSelect_.splice(0,_arrSelect_.length); //清空选择列表
             };
 
        //更新
             var $oUpdate = document.getElementById("btnUpdate");
             $oUpdate.onclick = function()
             {
                 var _oPreUpdateIndex_=_oTempValue_["$updateIndex"]
                 if (parseInt(_oPreUpdateIndex_)== -1){alert("您未编辑任何更新行!") ;return;}
                 if (_OTable_ && _oTbody_ )
                 {
                    if(confirm("您确定修改吗?"))
                    {
                        var _temprow_= _oTbody_.rows[parseInt(_oPreUpdateIndex_)];
                        var $namenode=_temprow_.cells[0].firstChild;
                        var $namenodevalue=document.all?$namenode.getAttribute("value"):$namenode.value;
                        if(!$namenodevalue||!$namenodevalue.trim()){ alert("姓名不能为空,请重新编辑!"); $namenode.focus(); return;}
                        for(var _cellindex_=0;_cellindex_<CELLS_COUNT;_cellindex_++)
                        {
                           var $tmpnode_=_temprow_.cells[_cellindex_].firstChild;
                           var $nodedata_=document.all?$tmpnode_.getAttribute("value"):$tmpnode_.value;
                           var _textnode_=  document.createTextNode($nodedata_);
                           var _oldNode_=_temprow_.cells[_cellindex_].firstChild;
                           _temprow_.cells[_cellindex_].replaceChild(_textnode_,_oldNode_);
                           delete _oTempValue_["$"+_cellindex_];
                        }
                    }
                 }
                 _oTempValue_["$updateIndex"] = -1
             };
           
                //查找
             var $oFind = document.getElementById("btnFind");
              $oFind.οnclick=function()
              {
                if(!_OTable_ && !_oTbody_ ){alert("目前尚无数据可查!");return;}
              
                ///判断之前有编辑未提交的
                var _oPreUpdateIndex_=_oTempValue_["$updateIndex"];
                var _oPreTempRow_=null;
                 if (parseInt(_oPreUpdateIndex_) != -1) //原先选定行重置
                 {
                 
                   if (!_OTable_ || !_oTbody_) return;
                   _oPreTempRow_= _oTbody_.rows[parseInt(_oPreUpdateIndex_)];
                   var _cancelornot_=false;
                   for(var _cellindex_=0;_cellindex_<CELLS_COUNT;_cellindex_++)
                   {
                      var $childNode_=_oPreTempRow_.cells[_cellindex_].firstChild;
                      var $nodedata_=document.all?$childNode_.getAttribute("value"):$childNode_.value;
                      if($nodedata_!=_oTempValue_["$"+_cellindex_])//与原值比较
                      {
                         _cancelornot_=confirm("你之前的内容作了修改,保存修改吗?");
                         break;
                      }
                   }
                   if(_cancelornot_)
                   {
                       //避免前次提交为空
                       var _firstNode_=_oPreTempRow_.cells[0].firstChild;
                       var $firstnodedata_=document.all?_firstNode_.getAttribute("value"):_firstNode_.value;
                       if(!$firstnodedata_||!$firstnodedata_.trim()){alert("姓名不能为空,请重新编辑!"); _firstNode_.focus(); return;};
                     
                       for(var _cellindex_=0;_cellindex_<CELLS_COUNT;_cellindex_++)
                       {
                           var _oldNode_=_oPreTempRow_.cells[_cellindex_].firstChild;
                           var $nodedata_=document.all?_oldNode_.getAttribute("value"):_oldNode_.value;
                           var _textnode_=  document.createTextNode($nodedata_);
                           _oPreTempRow_.cells[_cellindex_].replaceChild(_textnode_,_oldNode_);
                           delete _oTempValue_["$"+_cellindex_];
                       }
                   }
                   else
                   {
                      for(var _cellindex_=0;_cellindex_<CELLS_COUNT;_cellindex_++)
                       {
                           var _oldNode_=_oPreTempRow_.cells[_cellindex_].firstChild;
                           var _textnode_=  document.createTextNode(_oTempValue_["$"+_cellindex_]);
                           _oPreTempRow_.cells[_cellindex_].replaceChild(_textnode_,_oldNode_);
                           delete _oTempValue_["$"+_cellindex_];
                       }
                   }
                 }
               
                 //清除更新列表
                 for(var $obj_ in _oTempValue_)
                 {
                    delete _oTempValue_[$obj_];
                 }
                // _oTempValue_=new Object;
                 _oTempValue_["$updateIndex"] = -1;
              
                开始查询
                var _$oSelect_= document.getElementById("selectCol");
                var _Index_=_$oSelect_.selectedIndex;
                var _$oSelectValue_= _$oSelect_.value;
                var _$oSelectText_= _$oSelect_.options[_Index_].text;
                var _$olike_=document.getElementById("Col9");
                var _$rowcollection_=_oTbody_.rows;
                var _$rLen=_$rowcollection_.length;
                switch(parseInt(_$oSelectValue_))
                {
                  case 0:
                       for(var _rIndex=0;_rIndex<_$rLen;_rIndex++)
                       {
                          var _selectrow_=_$rowcollection_[_rIndex];
                          var $pat = new RegExp(_$olike_.value.trim(),"i");
                          if(!_$olike_.value.trim()){_selectrow_.style.display=document.all?"block":"table-row";}//如果查询框为空,则全部提取..模糊搜索
                          else {if(!$pat.test(_selectrow_.cells[0].firstChild.nodeValue.trim())){
                             _selectrow_.style.display="none";}}
                       }
                   break;
                   case 1:
                       for(var _rIndex=0;_rIndex<_$rLen;_rIndex++)
                       {
                          var _selectrow_=_$rowcollection_[_rIndex];
                          var $pat = new RegExp(_$olike_.value.trim(),"i");
                          if(!_$olike_.value.trim()){_selectrow_.style.display=document.all?"block":"table-row";}
                          else
                          {if(!$pat.test(_selectrow_.cells[1].firstChild.nodeValue.trim()))
                          {_selectrow_.style.display="none";}}
                       }
                   break;
                   case 2:
                       for(var _rIndex=0;_rIndex<_$rLen;_rIndex++)
                       {
                          var _selectrow_=_$rowcollection_[_rIndex];
                          var $pat = new RegExp(_$olike_.value.trim(),"i");
                          if(!_$olike_.value.trim()){_selectrow_.style.display=document.all?"block":"table-row";}
                          else
                          {if(!$pat.test(_selectrow_.cells[2].firstChild.nodeValue.trim()))
                          { _selectrow_.style.display="none";}}
                       }
                   break;
                   case 3:
                       for(var _rIndex=0;_rIndex<_$rLen;_rIndex++)
                       {
                          var _selectrow_=_$rowcollection_[_rIndex];
                          var $pat = new RegExp(_$olike_.value.trim(),"i");
                          if(!_$olike_.value.trim()){_selectrow_.style.display=document.all?"block":"table-row";}
                         else
                          {if(!$pat.test(_selectrow_.cells[3].firstChild.nodeValue.trim()))
                          { _selectrow_.style.display="none";}}
                       }
                   break;
                }
            
                 _arrSelect_.splice(0,_arrSelect_.length);//清除删除列表       
     </script>
 
                var _checkBoxList_=document.getElementsByTagName("input"); //重置checkbox选择.
                 for(var _index=0,iLen=_checkBoxList_.length;_index<iLen;_index++)
                 {
                   if(_checkBoxList_[_index].type=="checkbox")
                   {
                       _checkBoxList_[_index].checked=false;
                   }
                 }
              };
            
               var $oSelectAll = document.getElementById("btnSelectAll");
               $oSelectAll.οnclick=function()
               {
                  if(_OTable_ && _oTbody_ )
                  {
                       var _$rowall_=_oTbody_.rows;
                       for(var _rIndex=0,_rLen=_$rowall_.length;_rIndex<_rLen;_rIndex++)
                       {
                          var _selectrow_=_$rowall_[_rIndex];
                          _selectrow_.style.display=document.all?"block":"table-row";
                       }
                  }
               }
         }
 
</head>
 <body>
     <fieldset>
         <legend>操作Table之增删查改</legend>
         <fieldset>
             <legend>添加</legend>
             <label for="Col1">
                 姓名:
             </label>
             <input type="text" id="Col1" />
             <label for="Col2">
                 性别:
             </label>
             <input type="text" id="Col2" />
             <label for="Col3">
                 年龄:
             </label>
             <input type="text" id="Col3" />
             <label for="Col4">
                 籍贯:
             </label>
             <input type="text" id="Col4" />
             <input type="button" value="添加" id="btnAdd" />
         </fieldset>
         <fieldset>
             <legend>查找</legend>
             <label for="Col9">
                 查找内容:
             </label>
 
            <script type="text/javascript">
             var options=["<option value=\"0\" selected>姓名</option>","<option value=\"1\">性别</option>","<option value=\"2\">年龄</option>","<option value=\"3\">籍贯</option>"];
             document.write("<select name=\"selectCol\" id=\"selectCol\">"+options.join("")+"</select>");
             </script>
 
            <input type="text" id="Col9" />
             <input type="button" value="查找" id="btnFind" />
         </fieldset>
     </fieldset>
     <br />
     <fieldset id="TableData">
         <legend>表格数据</legend>
     </fieldset>
     <input type="button" value="删除" id="btnDelete" />
     <input type="button" value="更新" id="btnUpdate" />
     <input type="button" value="显示全部" id="btnSelectAll" />
 </body>
 </html>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值