拖动td的边框改变td大小 我想实现的效果是:往一个可编辑区域(iframe)里放入一个table后,当鼠标经过td的边框上时会变为双箭头,拖动鼠标可动态改变td的大小,请问该如果实现?谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一般来说是对div操作.td里面可以放个div <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 pixelsif (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> 这种方法太麻烦了,用ext或者是使用jquery吧,这些方法简单 5楼的效果非常好,不过,好像它说的是表格的TD。要加这个吧。<table border="1"> <tr> <td> <textarea id="simple" class="resizeMe" rows="10" cols="50">鼠标拖动可改变编辑表格大小</textarea> </td> </tr></table> 非常5楼的laowowo,就这玩意儿,我找了好久,终于找到了,从心底感谢。 EXTJS4动态加载问题 求大神解一个js问题 如何移动鼠标的位置 函数外侧有'return'声明 alert弹出的窗口怎么改变它的title 棘手 prototype 可拖拽表单.还有缺陷,望高手指点 submit时,能否新开子窗口(window.open) 一个棘手的问题 急,200分求用JAVASCRIPT打打印页面上的图片 新手提问:jquery如何找到HTML元素并且设置样式? js应用
<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>
<table border="1">
<tr>
<td>
<textarea id="simple" class="resizeMe" rows="10" cols="50">鼠标拖动可改变编辑表格大小</textarea>
</td>
</tr>
</table>