这是个简单的拖动层代码。我想问的是:能不能不要在鼠标移动事件中改变层的位置,在鼠标按下时弄个定时器(setTimeout),每隔一秒获取鼠标位置
去改变层的位置,鼠标释放时释放定时器。因为在鼠标移动事件中改变层经常会出现 咔 的现象。我试了一下用定时器获取不到鼠标位置,郁闷!求 高手 怎么解决啊??
<!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>
<title></title>
<script type="text/javascript">
var divobj;
var isDown=false;
var isFirst=true;
var divx=0;
var divy=0; function createDiv()
{
divobj=document.createElement("div");
divobj.innerHTML="dddddddab";
divobj.style.position="absolute";
divobj.style.left="0px";
divobj.style.top="0px";
divobj.style.width="100px";
divobj.style.height="80px";
divobj.style.backgroundColor="red"; document.body.appendChild(divobj); divobj.onmousedown=function()
{
document.body.onselectstart=function(){return false;};
isDown=true;
}; document.body.onmouseup=function()
{
document.body.onselectstart=function(){return true;};
isDown=false;
isFirst=true;
}; document.body.onmousemove=mouseMove;
} function mouseMove(e)
{
if(isDown)
{
if(e==null)
e=window.event;
var x=e.clientX;
var y=e.clientY; if(isFirst)
{
isFirst=false;
divx=x-(divobj.style.left.replace("px","")-0);
divy=y-(divobj.style.top.replace("px","")-0);
} divobj.style.left=x-divx+"px";
divobj.style.top=y-divy+"px";
}
}
</script>
</head>
<body onload="createDiv()" >
<br><br>
dllllllllllllllldllllllllllllllldllllllllllllllldlllllllllllllll<br>
dllllllllllllllldllllllllllllllldllllllllllllllldlllllllllllllll<br>
dllllllllllllllldllllllllllllllldllllllllllllllldlllllllllllllll<br>
dllllllllllllllldllllllllllllllldllllllllllllllldlllllllllllllll<br>
</body>
</html>
去改变层的位置,鼠标释放时释放定时器。因为在鼠标移动事件中改变层经常会出现 咔 的现象。我试了一下用定时器获取不到鼠标位置,郁闷!求 高手 怎么解决啊??
<!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>
<title></title>
<script type="text/javascript">
var divobj;
var isDown=false;
var isFirst=true;
var divx=0;
var divy=0; function createDiv()
{
divobj=document.createElement("div");
divobj.innerHTML="dddddddab";
divobj.style.position="absolute";
divobj.style.left="0px";
divobj.style.top="0px";
divobj.style.width="100px";
divobj.style.height="80px";
divobj.style.backgroundColor="red"; document.body.appendChild(divobj); divobj.onmousedown=function()
{
document.body.onselectstart=function(){return false;};
isDown=true;
}; document.body.onmouseup=function()
{
document.body.onselectstart=function(){return true;};
isDown=false;
isFirst=true;
}; document.body.onmousemove=mouseMove;
} function mouseMove(e)
{
if(isDown)
{
if(e==null)
e=window.event;
var x=e.clientX;
var y=e.clientY; if(isFirst)
{
isFirst=false;
divx=x-(divobj.style.left.replace("px","")-0);
divy=y-(divobj.style.top.replace("px","")-0);
} divobj.style.left=x-divx+"px";
divobj.style.top=y-divy+"px";
}
}
</script>
</head>
<body onload="createDiv()" >
<br><br>
dllllllllllllllldllllllllllllllldllllllllllllllldlllllllllllllll<br>
dllllllllllllllldllllllllllllllldllllllllllllllldlllllllllllllll<br>
dllllllllllllllldllllllllllllllldllllllllllllllldlllllllllllllll<br>
dllllllllllllllldllllllllllllllldllllllllllllllldlllllllllllllll<br>
</body>
</html>
解决方案 »
- easyui.datagrid.load("url",param)的一些问题
- javascript学习中遇到的问题
- JS获取fckeditor修改后的字段,需要点击两次才能得到最新的
- 一个很简单的给分题~~大家帮帮忙~
- javascript 简单问题求解!!!
- 为什么这个方法不能保存cookie?
- 有人用过 ActiveWidgets 吗?一个JavaScript写的grid......
- 父窗体与子窗体!!!!急求.来者有分.
- 传递参数的语句出错
- 我想问一下,有没有办法说让这个PopUpMen支持更多的版本?谢谢
- 问一个json的问题
- 小白:Extjs1 如何在toolbar中放置多个radio?
{
document.body.onselectstart=function(){return true;};
isDown=false;
isFirst=true;
}; document.onmousemove=mouseMove;这样看看
恩 ,好想比 document.body. 顺畅些了,那能不能用定时器实现呢?
<head>
<script type="text/javascript">
function mousePosition(ev){
if(ev.pageX || ev.pageY){
return {x:ev.pageX, y:ev.pageY};
}
return {
x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
y:ev.clientY + document.body.scrollTop - document.body.clientTop
};
}
document.onmousemove = mouseMove; function mouseMove(ev){
ev = ev || window.event;
var mousePos = mousePosition(ev);
if(showPos){
showPos=false;
document.getElementById('txtX').value=mousePos.x;
document.getElementById('txtY').value=mousePos.y;
setTimeout(function(){showPos=true;}, 1000);
}
}
var showPos=true;
</script>
</head>
<body>
X:<input id="txtX" type="text" />
Y:<input id="txtY" type="text" />
</body>
</html>谢谢给分。