用代碼說話!
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"></p><p><HTML xmlns:v="urn:schemas-microsoft-com:vml"><br /><head runat="server"><br /> <title>無標題頁</title><br /> <!--表格內畫線--><br /><SCRIPT language="javascript" src="JS/DrawLine.js" mce_src="JS/DrawLine.js" type="text/javascript"></SCRIPT><br /><STYLE> v/:* { BEHAVIOR: url(#default#VML) }</STYLE></p><p><!--表格內畫線onload="LookForTb(testTable,testDiv);--><br /></head><br /><body onload="LookForTb(testTable,testDiv); ><br /> <form id="form1" runat="server"></p><p> <DIV id="testDiv" style="Z-INDEX:200" mce_style="Z-INDEX:200"></DIV><br /> <TABLE id="testTable" border=1 bgcolor="000000" cellspacing="1" width=400 ><br /> <TR bgcolor="FFFFFF"><br /> <TD id="td1"> </TD><br /> <TD>張三</TD><br /> <TD>李四</TD><br /> <TD>王五</TD><br /> </TR><br /> <TR bgcolor="FFFFFF"><br /> <TD>數學</TD><br /> <TD>55</TD><br /> <TD>66</TD><br /> <TD>77</TD><br /> </TR><br /> <TR bgcolor="FFFFFF"><br /> <TD></TD><br /> <TD></TD><br /> <TD>68</TD><br /> <TD>71</TD><br /> </TR><br /> <TR bgcolor="FFFFFF"><br /> <TD> </TD><br /> <TD></TD><br /> <TD></TD><br /> <TD></TD><br /> </TR><br /> <TR bgcolor="FFFFFF"><br /> <TD> </TD><br /> <TD></TD><br /> <TD></TD><br /> <TD></TD><br /> </TR><br /> <TR bgcolor="FFFFFF"><br /> <TD> </TD><br /> <TD></TD><br /> <TD></TD><br /> <TD></TD><br /> </TR><br /> <TR bgcolor="FFFFFF"><br /> <TD>英語</TD><br /> <TD>99</TD><br /> <TD></TD><br /> <TD></TD><br /> </TR><br /> <TR bgcolor="FFFFFF"><br /> <TD>語文</TD><br /> <TD>33</TD><br /> <TD>44</TD><br /> <TD>55</TD><br /> </TR><br /> </TABLE> </p><p> </form><br /></body><br /></html><br /> //=============================<br />//頁面畫線<br />//table 為空白儲存格畫斜線<br />//輸入框,span 為空白,上加橫線<br />//autor:dy<br />//lastDate:20080522<br />//============================<br />String.prototype.trim = function()<br />{ </p><p>return this.replace(/(^/s*)|(/s*$)/g, "");<br />}</p><p>//table內畫線<br />//一般表格斜線<br />function LookForTb(table,divID){</p><p>for (var i=0; i < table.rows.length; i++)<br />{<br />for (var j=0; j < table.rows[i].cells.length; j++)<br />{<br />var obj = table.rows[i].cells[j];<br />var x,y,x1,y1;<br />var o = findLastRow(obj,table);<br />//alert('obj.innerText='+obj.innerText+'obj.innerText.trim()='+obj.innerText.trim())<br />if( tdIsNull(obj))<br />{</p><p>o=findLastRow(obj,table);<br />//記錄初始位置<br />x=obj.offsetLeft;<br />y=obj.offsetTop; </p><p>//記錄結束位置<br />x1=o.offsetLeft+o.offsetWidth;<br />y1=o.offsetTop+o.offsetHeight;</p><p>//跳過已畫線儲存格<br />if(o.cellIndex>obj.cellIndex)<br />{<br />j=o.cellIndex;<br />}</p><p>//跳過已畫線行<br />if(o.parentNode.rowIndex>obj.parentNode.rowIndex)<br />{<br />i=o.parentNode.rowIndex;<br />}</p><p>} </p><p>//畫線<br />varstr="<v:line id="+x1+y1+x+y+" from=/""+x+","+y+"/" to=/""+x1+","+y1+"/" Style="/" mce_Style="/""z-index:201; position:absolute; left:"+table.style.left+"; top:"+table.style.top+";/"></v:line>";<br />// alert(str);<br />var o=document.createElement(str);<br />divID.innerHTML += o.outerHTML;</p><p>}<br />}<br />}</p><p>//遞迴找到最後一個空列<br />function LookFortr(obj,table)<br />{<br />var o=obj;<br />var i=obj.parentNode.rowIndex;<br />var j=obj.cellIndex;<br />//alert(i+":"+j);<br />j++;</p><p>if(table.rows[i].cells[j] != null && table.rows[i].cells[j] != "undefined" )<br />{</p><p>if( tdIsNull(table.rows[i].cells[j]))<br />{<br />o=table.rows[i].cells[j];<br />o=LookFortr(o,table);<br />}<br />}<br />return o;<br />}</p><p>//找到最後一個空行<br />function findLastRow(obj,table)<br />{<br />var o=LookFortr(obj,table);<br />//判斷當前行是否空行<br />if(IsEmptyRow(o,table))<br />{<br />r=table.rows[o.parentNode.rowIndex+1];<br />if(r==null || r=='undefined')<br />{<br />return o;<br />}<br />o=table.rows[o.parentNode.rowIndex+1].cells[0];<br />if(o!=null && o!='undefined')<br />{<br />//判斷下一行是否空行<br />if(IsEmptyRow(o,table)) //下一行如果空行<br />{<br />//alert('bb');<br />o=findLastRow(o,table);</p><p>}<br />else //返回當前行最後列<br />{<br />//alert('aa');<br />o=LookFortr(obj,table);<br />}<br />}</p><p>}<br />return o;<br />}</p><p>//是否空行<br />function IsEmptyRow(obj,table)<br />{<br />var tmp="";<br />var tmpHTML="";<br />i=obj.parentNode.rowIndex;<br />for(j=0;j<table.rows[i].cells.length;j++)<br />{</p><p>if(table.rows[i].cells[j].tagName!="INPUT" && table.rows[i].cells[j].tagName != 'IMG' && table.rows[i].cells[j].tagName!="input" && table.rows[i].cells[j].tagName != 'img')<br />{<br />//alert('table.rows[i].cells[j].innerHTML='+table.rows[i].cells[j].innerHTML+'table.rows[i].cells[j].innerText='+table.rows[i].cells[j].innerText);<br />//alert(table.rows[i].cells[j].innerText);<br />try{<br />tmp+=table.rows[i].cells[j].innerText.trim().replace(" ","").replace(" ","");<br />tmpHTML+=table.rows[i].cells[j].innerHTML;<br />}<br />catch(e)<br />{<br />//alert(e.message);<br />}<br />}<br />else<br />{<br />return tdIsNull(table.rows[i].cells[j]);<br />}<br />}<br />//alert("tmp="+tmp+"!!!!!!!!!!!!!!!!!!");<br />//alert(tmpHTML);<br />if(tmp=="")<br />{<br />//alert('true');<br />return true;</p><p>}<br />else<br />{<br />//alert('false');<br />return false;</p><p>}<br />}</p><p>//判斷儲存格內控制項值是否為空白<br />function tdIsNull(o)<br />{<br />if(o.getElementsByTagName("img").length>0)<br />{<br />//alert(o.innerHTML);<br />return false;<br />}<br />if(o.getElementsByTagName("input").length>0)<br />{<br />var v="";<br />for(var i=0;i<o.all.length;i++)<br />{<br />if(o.all.item(i).tagName=="INPUT")<br />{<br />v+=o.all.item(i).value;<br />}<br />}<br />if(v.trim()=="")<br />{<br />return true;<br />}<br />else<br />{<br />return false;<br />}<br />}</p><p>else if(o.innerText.trim()=="")<br />{return true;}<br />return false;</p><p>}