我想实现的效果是:往一个可编辑区域(iframe)里放入一个table后,当鼠标经过td的边框上时会变为双箭头,拖动鼠标可动态改变td的大小,请问该如果实现?谢谢!

解决方案 »

  1.   

    一般来说是对div操作.td里面可以放个div
      

  2.   

    <html>
    <head>
    <title>鼠标拖动改变编辑表格大小</title>
    <SCRIPT language=javascript>
    var theobject = null; 
    function resizeObject() {
    this.el        = null; 
    this.dir    = "";      
    this.grabx = null;     
    this.graby = null;
    this.width = null;
    this.height = null;
    this.left = null;
    this.top = null;
    }function getDirection(el) {
    var xPos, yPos, offset, dir;
    dir = "";xPos = window.event.offsetX;
    yPos = window.event.offsetY;offset = 8; //The distance from the edge in pixels
    if (yPos<offset) dir += "n";
    else if (yPos > el.offsetHeight-offset) dir += "s";
    if (xPos<offset) dir += "w";
    else if (xPos > el.offsetWidth-offset) dir += "e";return dir;
    }function doDown() {
    var el = getReal(event.srcElement, "className", "resizeMe");if (el == null) {
       theobject = null;
       return;
    }  dir = getDirection(el);
    if (dir == "") return;theobject = new resizeObject();
      
    theobject.el = el;
    theobject.dir = dir;theobject.grabx = window.event.clientX;
    theobject.graby = window.event.clientY;
    theobject.width = el.offsetWidth;
    theobject.height = el.offsetHeight;
    theobject.left = el.offsetLeft;
    theobject.top = el.offsetTop;window.event.returnValue = false;
    window.event.cancelBubble = true;
    }function doUp() {
    if (theobject != null) {
       theobject = null;
    }
    }
    function doMove() {
    var el, xPos, yPos, str, xMin, yMin;
    xMin = 8; 
    yMin = 8;el = getReal(event.srcElement, "className", "resizeMe");if (el.className == "resizeMe") {
       str = getDirection(el);
       if (str == "") str = "default";
       else str += "-resize";
       el.style.cursor = str;
    }
    if(theobject != null) {
       if (dir.indexOf("e") != -1)
        theobject.el.style.width = Math.max(xMin, theobject.width + window.event.clientX - theobject.grabx) + "px";   if (dir.indexOf("s") != -1)
        theobject.el.style.height = Math.max(yMin, theobject.height + window.event.clientY - theobject.graby) + "px";   if (dir.indexOf("w") != -1) {
        theobject.el.style.left = Math.min(theobject.left + window.event.clientX - theobject.grabx, theobject.left + theobject.width - xMin) + "px";
        theobject.el.style.width = Math.max(xMin, theobject.width - window.event.clientX + theobject.grabx) + "px";
       }
       if (dir.indexOf("n") != -1) {
        theobject.el.style.top = Math.min(theobject.top + window.event.clientY - theobject.graby, theobject.top + theobject.height - yMin) + "px";
        theobject.el.style.height = Math.max(yMin, theobject.height - window.event.clientY + theobject.graby) + "px";
       }
       window.event.returnValue = false;
       window.event.cancelBubble = true;

    }
    function getReal(el, type, value) {
    temp = el;
    while ((temp != null) && (temp.tagName != "BODY")) {
       if (eval("temp." + type) == value) {
        el = temp;
        return el;
       }
       temp = temp.parentElement;
    }
    return el;
    }document.onmousedown = doDown;
    document.onmouseup   = doUp;
    document.onmousemove = doMove;
    </SCRIPT><SCRIPT language=javascript>
    var moz;
    if (moz) {
    extendElementModel();
    extendEventObject();
    emulateEventHandlers(["mousemove", "mousedown", "mouseup"]);
    }
    </SCRIPT></head>
    <body><textarea id="simple" class="resizeMe" rows="10" cols="50">鼠标拖动可改变编辑表格大小</textarea></body>
    </html>
      

  3.   

    这种方法太麻烦了,用ext或者是使用jquery吧,这些方法简单
      

  4.   

    5楼的效果非常好,不过,好像它说的是表格的TD。要加这个吧。
    <table border="1">
    <tr>
    <td>
    <textarea id="simple" class="resizeMe" rows="10" cols="50">鼠标拖动可改变编辑表格大小</textarea>
    </td>
    </tr>
    </table>
      

  5.   

    非常5楼的laowowo,就这玩意儿,我找了好久,终于找到了,从心底感谢。