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

JS拖动改变表格列宽的bug,该如何解决

2012-02-20 
JS拖动改变表格列宽的bug以下代码只是实现了向右拖动,向左怎么实现。还有就是如何让它按着拖动。HTML code

JS拖动改变表格列宽的bug
以下代码只是实现了向右拖动,向左怎么实现。
还有就是如何让它按着拖动。

HTML code
 <!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档 </title>
<script language="javascript" type="text/javascript">

function Table(n){
this.n=n;
this.t;this.b;this.r;this.w;
}
Table.prototype.init=function(){
this.t=document.getElementById(this.n);
this.b=this.t.getElementsByTagName("tbody")[0];
this.r=this.b.rows; var l=this.r.length;
for(var i=0;i <l;i++){
if(i==0){
var c=this.r[i].cells;this.w=c.length;
for(var x=0;x <this.w;x++){
//添加事件
var th=c[x];
this.addEvent(th,"mousemove",function(event){
event=window.event||event;
var srcObj=event.srcElement||event.target,tblParent=srcObj.parentElement||srcObj.parentNode;
while(tblParent.tagName!='TABLE')tblParent=tblParent.parentElemnt||tblParent.parentNode;
if(srcObj.tagName!='TH')return;
var rowindex=(srcObj.parentElement||srcObj.parentNode).rowIndex;
if(rowindex==0){
if(srcObj.offsetWidth-event.offsetX <3){
srcObj.style.cursor='w-resize';
var intPosX=(new findPos(srcObj)).intX;
srcObj.style.pixelWidth=event.x-intPosX;//event.x
//alert(event.x);
}else if((srcObj.offsetWidth-event.offsetX)>3&&(srcObj.offsetWidth-event.offsetX <6)){
srcObj.style.cursor='w-resize';
var intPosX=(new findPos(srcObj)).intX;
srcObj.style.pixelWidth=event.x-intPosX;
}else{
srcObj.style.cursor='default';
}
}
});
this.addEvent(th,"mousedown",function(event){

});
}
}
}
}
function findPos(obj){        //取得本元素的绝对坐标
    var x=obj.offsetLeft,    y=obj.offsetTop;
    while(obj=obj.offsetParent){x += obj.offsetLeft;y += obj.offsetTop;}
    this.intX=x;    this.intY=y;
    return this
}
Table.prototype.addEvent=function(obj, type, fn){
var d=document;
var browser=function(s){return navigator.userAgent.toLowerCase().indexOf(s)!=-1}; //浏览器类型判断
var isOpera=browser('opera'),isIE=browser('msie')!=-1&&(d.all&&!isOpera);
if(isIE){
obj.attachEvent("on"+type,fn);
}else{
obj.addEventListener(type,fn,false)
}
}
var table=new Table("myTable");
table.addEvent(window,"load",function(){table.init();});

</script>
</head>

<body>
<table id="myTable" border="1" cellpadding="0" cellspacing="0" class="tablesorter">
    <tr>
        <th>Last Name </th>
        <th>First Name </th>
        <th>Email </th>
        <th>Due </th>
        <th>Web Site </th>
  </tr>
    <tr>
        <td>Smith </td>
        <td>John </td>
        <td>jsmith@gmail.com </td>
        <td>$50.00 </td>


        <td>http://www.jsmith.com </td>
  </tr>
  <tr>
        <td>Bach </td>
        <td>Frank </td>
        <td>fbach@yahoo.com </td>
        <td>$50.00 </td>
        <td>http://www.frank.com </td>
  </tr>
  <tr>
        <td>Doe </td>
        <td>Jason </td>
        <td>jdoe@hotmail.com </td>
        <td>$100.00 </td>
        <td>http://www.jdoe.com </td>
</tr>
<tr>
    <td>Conway </td>
    <td>Tim </td>
    <td>tconway@earthlink.net </td>
    <td>$50.00 </td>
    <td>http://www.timconway.com </td>
</tr>
</table>
<script language="javascript" type="text/javascript">
/*var tab=new Table("myTable");
tab.init();*/
</script>
</body>
</html>



[解决办法]
有空写的一个,自己参考下,改你的代码就算了。。还要理解
仿Microsoft Excel单元格拖拽修改表格列宽

效果点击这里
[解决办法]

热点排行