首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

麻烦大家修改下实例中的BUG?该怎么解决

2012-03-22 
麻烦大家修改下实例中的BUG?这是我从网上找的个实例:但是有很明显的BUG,就是当把某单元格的退格为空时,移

麻烦大家修改下实例中的BUG?
这是我从网上找的个实例:但是有很明显的BUG,就是当把某单元格的退格为空时,移开焦点,发现此刻除了文本框消失外,所在的单元格也同时消失了;我肯定希望此是该单元格不消失,如何修正这个BUG呢?请各位朋友指点?多谢!
<title> 编辑表格 </title>
<style   type= "text/css ">
<!--
body   {   font-size:12px;}
input   {
  font-family:   Geneva,   Arial,   Helvetica,   sans-serif;
  font-size:   12px;
  color:   #666;
  background-color:   #FFFFE1;
  border:   1px   solid   #999;
  height:auto;
}
.Table   {   border-width:1px   0px   0px   1px;   border-style:solid;   border-color:#999;}
.Table   td   {   border-width:0px   1px   1px   0px;   border-style:solid;   border-color:#999;}
-->
</style>
</head>

<body>
<table   width= "80% "     border= "0 "   cellpadding= "0 "   cellspacing= "0 "   onclick= "setEdit(event.srcElement) "   class= "Table ">
    <tr>
        <td   width= "17% "> a </td>
        <td   width= "19% "> bb </td>
        <td   width= "30% "> asdf </td>
        <td   width= "23% "> eee </td>
        <td   width= "11% "> adsf </td>
    </tr>
    <tr>
        <td> 1 </td>
        <td> 3 </td>
        <td> 4 </td>
        <td> 5 </td>
        <td> 9 </td>
    </tr>
    <tr>
        <td> as </td>
        <td> asdfsdfa </td>
        <td> sadfsdaf </td>
        <td> sadfsdfa </td>
        <td> sdafsadf </td>
    </tr>
    <tr>
        <td> sadfsdfa </td>
        <td> asdf </td>
        <td> &nbsp; </td>
        <td> asdfasdf </td>
        <td> asdfasf </td>
    </tr>
    <tr>
        <td> asdfsadf </td>
        <td> asdfsadf </td>
        <td> asdfasdfasd </td>
        <td> ea </td>
        <td> asdfasfd </td>
    </tr>
</table>
</body>
</html>
<script   type= "text/javascript ">
oldObj= " ";
var   newNode=document.createElement( "input ");//创建text文本框表单对象
newNode.type= "text ";
function   setEdit(click_td)//click_td是事件发生对象
{
  var   obj;
 
  if(click_td.tagName== "TD ")//如果事件是发生在单元格上时;
  {
    if(oldObj!= " ")//如果旧的对象不为空时;
    {


      oldObj.removeChild(eval( "tmpText "));//在旧的对象中移除tmpText节点。
      if(newNode.vlaue== " ")   oldObj.innerText= "&nbsp; ";
      else   oldObj.innerText=newNode.value;
    }    
    obj=click_td;
    oldObj=obj;    
    newNode.width=obj.offsetWidth;
    newNode.height=obj.offsetHeight;    
    newNode.id= "tmpText ";
    newNode.value=obj.innerText;
    obj.innerText= " ";
    obj.appendChild(newNode);
    newNode.focus();
  }
}
</script>

</body>


[解决办法]
兼容IE6,FF2

<html>
<head>
<title> 编辑表格 </title>
<style type= "text/css ">
<!--
body { font-size:12px;}
input {
width:100%;
font-family: Geneva, Arial, Helvetica, sans-serif;
font-size: 12px;
color: #666;
background-color: #FFFFE1;
border: 1px solid #999;
}
.Table { border-width:1px 0px 0px 1px; border-style:solid; border-color:#999; border-collapse: collapse;}
.Table td { border-width:0px 1px 1px 0px; border-style:solid; border-color:#999;word-break:break-all;}
-->
</style>
<script type= "text/javascript ">
var oldObj=null;
var gTxt=document.createElement( "input ");//创建text文本框表单对象
gTxt.type= "text ";
function setEdit(evt){
var obj = evt.srcElement || evt.target;
if(!obj || obj.tagName.toUpperCase()!= "TD " || obj==oldObj)
return ;

if(oldObj)
{
var txtNode = document.createTextNode(gTxt.value);
gTxt.parentNode.appendChild(txtNode);
}
oldObj=obj;
gTxt.value = obj.childNodes[0].nodeValue;
for(var i=obj.childNodes.length-1;i> =0;i--)
obj.removeChild(obj.childNodes[i]);
obj.appendChild(gTxt);
gTxt.focus();
}
</script>
</head>

<body>
<table width= "80% " border= "0 " cellpadding= "0 " cellspacing= "0 " onclick= "setEdit(event) " class= "Table ">
<tr>
<td width= "17% "> a </td>
<td width= "19% "> bb </td>
<td width= "30% "> asdf </td>
<td width= "23% "> eee </td>
<td width= "11% "> adsf </td>
</tr>
<tr>
<td> 1 </td>
<td> 3 </td>
<td> 4 </td>
<td> 5 </td>
<td> 9 </td>
</tr>
<tr>
<td> as </td>
<td> asdfsdfa </td>
<td> sadfsdaf </td>
<td> sadfsdfa </td>
<td> sdafsadf </td>
</tr>
<tr>
<td> sadfsdfa </td>
<td> asdf </td>
<td> &nbsp; </td>
<td> asdfasdf </td>
<td> asdfasf </td>
</tr>
<tr>
<td> asdfsadf </td>
<td> asdfsadf </td>
<td> asdfasdfasd </td>
<td> ea </td>
<td> asdfasfd </td>
</tr>


</table>
</body>
</html>

热点排行