藍森林首頁 | 返回主頁 | 本站地圖 | 站內搜索 | 聯繫信箱 |
 您目前的位置:首頁 > 自由軟件 > 技術交流 > 應用編程


    

藍森林 http://www.lslnet.com 2006年8月25日 8:28

網頁上有個表格,能不能做單擊一個格子

網頁上有個表格有很多格子,能不能做單擊一個格子,在它邊上出現一個單行文本框和一個確定按鈕,輸入值並確定以後,格子裡的內容就變成剛才輸入的值,每個格子能這樣操作。謝謝,怎麼寫?

謝謝各位高手!又沒有人知道?

表格有很多格子,這個格子是什麼??
如果是表格,當點擊時,顯示一層,層上有單行文本框和一個確定按鈕,
輸入後,使用innerHTML就OK...

無聊,作了一個表格。。。
[html]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<META name="Author" content="Sheneyan" />
<script type="text/javascript">
function setTableEditable(name){
  var table=document.getElementById(name);
  var tds=table.getElementsByTagName("td");
  for (var i=0,td;td=tds[i];i++){
    td.onclick=function(){
       if (this.getAttribute("edit")=='a')return;
       var t=this.innerHTML;
       this.innerHTML=document.getElementById("ed").innerHTML.replace(/@value/gi,html2txt(t));
       this.setAttribute('edit','a');
    }
  }
}
//html轉換成txt
function html2txt(str){
  return str.replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/&nbsp;/g," ").replace(/&amp;/g,"&");
}
//txt轉換成html
function txt2html(str){
  return str.replace(/&/g,"&amp;").replace(/ /g,"&nbsp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");
}
//判斷回車
function chkEnter(e){
  var kc=document.all?event.keyCode:e.which;
  var cur=document.all?event.srcElement:e.target;
  if (kc==13){
    var t=nextObj(cur);
    if (t)
      t.onclick();
  }
}
//下一個對像
function nextObj(cur){
  var t=cur;
  do{
    t=t.nextSibling
  }while (t&&t.nodeType!=1);
  return t;
}
//上一個對像
function prevObj(cur){
  var t=cur;
  do{
    t=t.previousSibling;
  }while (t&&t.nodeType!=1);
  return t;
}
//保存
function save(cur){
  var t=prevObj(cur),v;
  if (t)v=t.value;
  cur.parentNode.setAttribute("edit",'b');
  cur.parentNode.innerHTML=txt2html(v);
}
</script>
<style type="text/css">
table{border:solid 1px black;border-collapse:collapse}
td{border:solid 1px;}
input{border:solid 1px;height:20px}
input#t1{width:50px}
div#ed{display:none}
</style>
</head>
<body onload="setTableEditable('test')">
<table id="test">
<tr><td>1</td><td>v</td><td>ff</td><td>zxc</td><td>weqw</td><td>fg</td><td>hhh</td><td>jjj</td></tr>
<tr><td>2</td><td>我</td><td>h</td><td>hdfq</td><td>wertyuj</td><td>ccxa</td><td>hw12</td><td>cz</td></tr>
<tr><td>3</td><td>x</td><td>j</td><td>cvx</td><td>teh</td><td>hdf</td><td>zxc</td><td>df</td></tr>
<tr><td>4</td><td>n</td><td>dfg</td><td>zz</td><td>123</td><td>zxcv</td><td>tg</td><td>zc</td></tr>
<tr><td>d87</td><td>z</td><td>sdf</td><td>ee</td><td>rr</td><td>tt</td><td>yy</td><td>uu</td></tr>
<tr><td>d</td><td>v</td><td>sd</td><td>cc</td><td>zz</td><td>aa</td><td>qq</td><td>ww</td></tr>
<tr><td>gs</td><td>cc</td><td>s</td><td>rr</td><td>dd</td><td>ccc</td><td>zz</td><td>xx</td></tr>
<tr><td>g</td><td>s</td><td>hh</td><td>kjg</td><td>a</td><td>www</td><td>ee</td><td>rr</td></tr>
</table>
<div id="ed">
<input id="t1" value="@value" onkeyup="chkEnter(event)"/>
<input id="t2" type="button" onclick="save(this)" value="保存"/>
</div>
</body>
</html>[/html]

[html]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=big5">
<title>Untitled Document</title>
<style type="text/css">
<!--
input {
        font-family: Geneva, Arial, Helvetica, sans-serif;
        font-size: 12px;
        color: #999999;
        background-color: #FFFFE1;
        border: 1px solid #999999;
}
-->
</style>
</head>

<body>
<div id="aa"></div>
<table width="80%" id="tab1"  border="1" bordercolorlight="#CCCCCC" bordercolordark="#FFFFFF" onclick="setEdit(event.srcElement)">
  <tr>
    <td width="20%" id="td1">a</td>
    <td width="20%">bb</td>
    <td width="20%">asdf</td>
    <td width="20%">eee</td>
    <td width="20%">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>
oldObj="";
var newNode=document.createElement("input");
newNode.type="text";

function setEdit(click_td){
        var obj;
       
        if(click_td.tagName=="TD"){
                if(oldObj!=""){
                        oldObj.removeChild(eval("tmpText"));
                        if(newNode.vlaue=="") oldObj.innerText="&nbsp;";
                        else oldObj.innerText=newNode.value;
                }
               
                obj=click_td;
                oldObj=obj;
                //newNode.width=obj.clientWidth;
                //newNode.height=obj.clientHeight;
                newNode.width=obj.offsetWidth;
                newNode.height=obj.offsetHeight;

                newNode.id="tmpText";
                newNode.value=obj.innerText;
                obj.innerText="";
                obj.appendChild(newNode);
                newNode.focus();

        }
}
</script>


[/html]

謝謝!下午沒人回復。我就自己想了,結果竟然和Sheneyan,xling驚人的相似。請看
不過,要做得更加方便實用。還支持整列修改,點列頭
[html]
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>新建網頁 1</title>
</head>
<script language=javascript>
var disinput=0;
function presskey(obj2,obj1)
{
        if (event.keyCode==13) noneinput(obj2,obj1);
}
function put1(fcolor,bcolor,isb)
{
                var writeb='';
                if (isb==1) writeb='font-weight: bold;';
                document.write('<table border="0" cellpadding="0" bgcolor="'+bcolor+'" style="border-collapse: collapse" width="100%" height="100%" bordercolor="#7777777" id="table2">')
                for (i = 1; i < 97; i++)
                {
                        document.write('<tr><td style="'+writeb+'color:'+fcolor+';border-top-style: solid; border-top-width: 1px; border-bottom-style: solid; border-bottom-width: 1px;height: 22px" class=es2 align="center" onclick="showinput(this);">'+i+'</td></tr>')
                   }
                document.write('</table>')
}
function showinput(obj1)
{
if (disinput==0)
        {
        var tdval=obj1.innerText;
        obj1.innerHTML='';
        obj1.innerHTML='<input type="text" name="T1" id="T1" size="20" style="width=100%;height=100%" class=es2 onblur="noneinput(this,this.parentElement)" onkeydown="return presskey(this,this.parentElement)">';
        document.all.T1.value=tdval;
        document.all.T1.select();
        document.all.T1.focus();

        disinput=1;
        }
}

function noneinput(obj2,obj1)
{
        if (disinput==1)
        {
                var tdval=obj2.value;
                obj1.innerHTML='';
                obj1.innerText=tdval;
                disinput=0;
        }
}

function showtextarea(obj1,fcolor,bcolor,isb)
{
if (disinput==0)
        {
        var tdval=obj1.innerText;
        obj1.innerHTML='';
        obj1.innerHTML='<textarea rows="96" name="S1" id="S1" cols="6" class=es2 style="padding:0;padding-left:10px; border-width:0px;line-height: 22px;height=100%;background-color=#000000;color:#FFFFFF" onblur="nonetextarea(this.parentElement,\''+fcolor+'\',\''+bcolor+'\','+isb+')"></textarea>';
        document.all.S1.value=tdval;
        document.all.S1.select();
        document.all.S1.focus();

        disinput=1;
        }
}
function nonetextarea(obj1,fcolor,bcolor,isb)
{
if (disinput==1)
        {
        var tdval=obj1.innerText;
        var tdarray,tdstring;
        var writeb='';
        if (isb==1) writeb='font-weight: bold;';
        //var bcolor='#ffffff',writeb='',fcolor='#000000';
        obj1.innerHTML='';
        tdarray=tdval.split('\r');
        tdval='';
        tdval='<table border="0" cellpadding="0" bgcolor="'+bcolor+'" style="border-collapse: collapse" width="100%" height="100%" bordercolor="#7777777" id="table2">';
        for (tdstring in tdarray)
        {tdval=tdval+'<tr><td style="'+writeb+'color:'+fcolor+';border-top-style: solid; border-top-width: 1px; border-bottom-style: solid; border-bottom-width: 1px;height: 22px" class=es2 align="center" onclick="showinput(this);">'+tdarray[tdstring]+'</td></tr>'}
        tdval=tdval+'</table>'
        obj1.innerHTML=tdval;
        disinput=0;
        }
}
</script>

<style type="text/css"><!--

td,body {  font-size: 9pt}

a:link{ color:#000000; text-decoration:none}     

a:visited{COLOR: #000000; TEXT-DECORATION: none}

a:active{color:green;text-decoration:none}

a:hover{color:red;text-decoration:underline}

.es1          { font-family: Tahoma; font-size: 8pt; color: #ffffff }
.es2          { font-family: Tahoma; font-size: 8pt; color: #000000}
.es3          { font-family: Tahoma; font-size: 8pt; color: #ff0000 }
.es4          { font-family: Tahoma; font-size: 8pt; color: #00ff00 }
.es5          { font-family: Tahoma; font-size: 8pt; color: #ff5522 }

.es6          { font-size: 8pt; font-family: Tahoma; color: #ffffff }
.es7          { font-size: 8pt; font-family: Tahoma; color: #ffff00 }
.es8          { font-size: 9pt; font-family: 細明體; color: #ff0000 }
.es9          { font-size: 9pt; font-family: 細明體; color: #538bff }
-->

</style>
<body>
<div align=center>
<table border="1" cellpadding="0" style="border-collapse: collapse" width="783" height="100%" bordercolor="#777777" id="table1">
        <form method="POST" action="_derived/nortbots.htm" onSubmit="location.href='_derived/nortbots.htm';return false;" webbot-onSubmit webbot-action="--WEBBOT-SELF--">
        <tr>
                <td width="4%" align="center" height="21" onclick="showinput();">序號</td>
                <td width="10%" align="center" height="21" colspan="2">第1段</td>
                <td width="10%" align="center" height="21" colspan="2">第2段</td>
                <td width="10%" align="center" height="21" colspan="2">第3段</td>
                <td width="10%" align="center" height="21" colspan="2">第4段</td>
                <td width="10%" align="center" height="21" colspan="2">第5段</td>
                <td width="9%" align="center" height="21" colspan="2">第6段</td>
                <td width="9%" align="center" height="21" colspan="2">第7段</td>
                <td width="9%" align="center" height="21" colspan="2">第8段</td>
                <td width="9%" align="center" height="21" colspan="2">第9段</td>
                <td width="10%" align="center" height="21" colspan="2">第10段</td>
        </tr>
        <tr>
                <td width="5%" align="center" height="21">12</td>
                <td width="5%" align="center" height="21" onclick="showtextarea(document.all.td1_1,'#ff0000','#dddddd',0);">列頭</td>
                <td width="5%" align="center" height="21">列頭</td>
                <td width="5%" align="center" height="21" style="font-size: 9pt">列頭</td>
                <td width="5%" align="center" height="21" style="font-size: 9pt">列頭</td>
                <td width="5%" align="center" height="21" style="font-size: 9pt">列頭</td>
                <td width="5%" align="center" height="21" style="font-size: 9pt">列頭</td>
                <td width="5%" align="center" height="21" style="font-size: 9pt">列頭</td>
                <td width="5%" align="center" height="21" style="font-size: 9pt">列頭</td>
                <td width="5%" align="center" height="21" style="font-size: 9pt">列頭</td>
                <td width="5%" align="center" height="21" style="font-size: 9pt">列頭</td>
                <td width="5%" align="center" height="21">列頭</td>
                <td width="4%" align="center" height="21">列頭</td>
                <td width="5%" align="center" height="21" style="font-size: 9pt">列頭</td>
                <td width="4%" align="center" height="21" style="font-size: 9pt">列頭</td>
                <td width="5%" align="center" height="21" style="font-size: 9pt">列頭</td>
                <td width="4%" align="center" height="21" style="font-size: 9pt">列頭</td>
                <td width="5%" align="center" height="21" style="font-size: 9pt">列頭</td>
                <td width="4%" align="center" height="21" style="font-size: 9pt">列頭</td>
                <td width="5%" align="center" height="21" style="font-size: 9pt">列頭</td>
                <td width="5%" align="center" height="21" style="font-size: 9pt">列頭</td>
        </tr>
        <tr valign=top>
                <td align="center">
                <script language=javascript>
                put1('#484848','#ffffff',1);
                </script>
                </td>
                <td align="center" id="td1_1" valign="top">
                <script language=javascript>
                put1('#ff0000','#dddddd',0);
                </script>
                </td>
                <td align="center">  </td>
                <td align="center"> </td>
                <td align="center"> </td>
                <td align="center"> </td>
                <td align="center"> </td>
                <td align="center"> </td>
                <td align="center"> </td>
                <td align="center"> </td>
                <td align="center"> </td>
                <td align="center"> </td>
                <td align="center"> </td>
                <td align="center"> </td>
                <td align="center"> </td>
                <td align="center"> </td>
                <td align="center"> </td>
                <td align="center"> </td>
                <td align="center"> </td>
                <td align="center"> </td>
                <td align="center"> </td>
        </tr>
        <tr>
                <td> </td>
                <td> </td>
                <td> </td>
                <td> </td>
                <td> </td>
                <td> </td>
                <td> </td>
                <td> </td>
                <td> </td>
                <td> </td>
                <td> </td>
                <td> </td>
                <td> </td>
                <td> </td>
                <td> </td>
                <td> </td>
                <td> </td>
                <td> </td>
                <td> </td>
                <td> </td>
                <td> </td>
        </tr>
        </form>
</table>
</div>
</body>

</html>
[/html]

還要不斷修改,最終要根據表格裡的數字生成XML文件。謝謝大家支持
最終結果我會發上來的!

請教版主,你寫的代碼中

  if (t)v=t.value;是什麼意思??這裡應該把t.value賦值給v,

cao888在上個帖子中說


寫得沒錯阿!

.........
知道沒錯呀,
我問的是   if (t)v=t.value;是什麼意思??

路過,但不懂程序~佩服你們

cao888在上個帖子中說



防止出錯設置的,因為我的那兩個函數(取得上一個對像和下一個對像)不一定能返回正確的值(比如上一個對像不存在,這時候就返回null),所以得判斷返回值是否正確,如果確實是,才去取得它的value(我這裡沒判斷是否是input:D偷懶了),雖然這個判斷在這裡似乎不是很重要,不過還是留下來了,簡單的防止錯誤而已。

子烏的兼容性好




Copyright © 1999-2000 LSLNET.COM. All rights reserved. 藍森林網站 版權所有。 E-mail : webmaster@lslnet.com