本来能很正常运行的,不过当页面往下拉了一段距离的时候,会出现偏移,虽然坐标还能取到,但是在正确位置已经画不出图了,画图点会处于鼠标上方,而不是正常的鼠标右边。怎样修改能改好呢?
<html>
<head>
<style>
#j_div_node {
border: 0;
background-color: blue;
display: block;
position: absolute;
}
</style>
<script language="javascript" type="text/javascript">
var j_lb_down = false;
var j_pixLen = 2;
var j_margin = 2;
var j_pre_xy = [0,0];
function m(evt){
//显示鼠标坐标
var obj = document.getElementById("j_div");
obj.innerHTML = evt.clientX +","+evt.clientY;
obj.style.top = evt.clientY+"px";
obj.style.left= (evt.clientX+15)+"px";
//画
if(j_lb_down){
//画点
pix(evt.clientX,evt.clientY);
//画连接线,判断不要从[0,0]画起
if(j_pre_xy[0]!=0&&j_pre_xy[1]!=0){
line(j_pre_xy,[evt.clientX,evt.clientY]);
}
//记录坐标
j_pre_xy[0] = evt.clientX;
j_pre_xy[1] = evt.clientY;
}
}
//画点
function pix(x,y){
var j_pix = document.createElement("div");
j_pix.id = "j_div_node";
j_pix.style.width = j_pixLen+"px";
j_pix.style.height = j_pixLen+"px";
j_pix.style.lineHeight = j_pixLen+"px";
j_pix.style.fontSize = j_pixLen+"px";
j_pix.style.top = y+"px";
j_pix.style.left= x+"px";
document.body.appendChild(j_pix);
}
//连接两个点
function line(xy1,xy2){
//控制间隔(间隔越小越卡)
var x_cha = Math.abs(xy1[0]-xy2[0]);
var y_cha = Math.abs(xy1[1]-xy2[1]);
if((x_cha>y_cha?x_cha:y_cha)<j_margin){
return;
}
for(var i=j_margin;i<=(x_cha>y_cha?x_cha:y_cha);i+=j_margin){
//百分比
var per = i/(x_cha>y_cha?x_cha:y_cha);
//用点连线,判断横纵坐标的加或减
pix(
xy1[0]+(xy1[0]>xy2[0]?-(per*x_cha): (per*x_cha)),
xy1[1]+(xy1[1]>xy2[1]?-(per*y_cha): (per*y_cha))
);
}
}
//删除所有生成的点DIV
function rmAllPix(nodeName){
var divs = document.getElementsByTagName("div");
for(var i=divs.length-1 ; i>0 ; i--){
if(divs[i].id==nodeName){
document.body.removeChild(divs[i]);
}
}
//
j_pre_xy[0] = 0;
j_pre_xy[1] = 0;
}
//MOUSE UP
function mouseUp(){
j_lb_down=false;
j_pre_xy[0] = 0;
j_pre_xy[1] = 0;
}
</script>
</head>
<body id="body" onmousemove="m(window.event);" onmousedown="j_lb_down=true;" onmouseup="m(window.event);mouseUp();">
<div name="test" id="j_div" style="position:absolute; top:600; left:200; border:1px solid black; font-size:14px;"></div>
<input type="button" onClick="rmAllPix('j_div_node');" value="Clear" />
</body>
</html>
<html>
<head>
<style>
#j_div_node {
border: 0;
background-color: blue;
display: block;
position: absolute;
}
</style>
<script language="javascript" type="text/javascript">
var j_lb_down = false;
var j_pixLen = 2;
var j_margin = 2;
var j_pre_xy = [0,0];
function m(evt){
//显示鼠标坐标
var obj = document.getElementById("j_div");
obj.innerHTML = evt.clientX +","+evt.clientY;
obj.style.top = evt.clientY+"px";
obj.style.left= (evt.clientX+15)+"px";
//画
if(j_lb_down){
//画点
pix(evt.clientX,evt.clientY);
//画连接线,判断不要从[0,0]画起
if(j_pre_xy[0]!=0&&j_pre_xy[1]!=0){
line(j_pre_xy,[evt.clientX,evt.clientY]);
}
//记录坐标
j_pre_xy[0] = evt.clientX;
j_pre_xy[1] = evt.clientY;
}
}
//画点
function pix(x,y){
var j_pix = document.createElement("div");
j_pix.id = "j_div_node";
j_pix.style.width = j_pixLen+"px";
j_pix.style.height = j_pixLen+"px";
j_pix.style.lineHeight = j_pixLen+"px";
j_pix.style.fontSize = j_pixLen+"px";
j_pix.style.top = y+"px";
j_pix.style.left= x+"px";
document.body.appendChild(j_pix);
}
//连接两个点
function line(xy1,xy2){
//控制间隔(间隔越小越卡)
var x_cha = Math.abs(xy1[0]-xy2[0]);
var y_cha = Math.abs(xy1[1]-xy2[1]);
if((x_cha>y_cha?x_cha:y_cha)<j_margin){
return;
}
for(var i=j_margin;i<=(x_cha>y_cha?x_cha:y_cha);i+=j_margin){
//百分比
var per = i/(x_cha>y_cha?x_cha:y_cha);
//用点连线,判断横纵坐标的加或减
pix(
xy1[0]+(xy1[0]>xy2[0]?-(per*x_cha): (per*x_cha)),
xy1[1]+(xy1[1]>xy2[1]?-(per*y_cha): (per*y_cha))
);
}
}
//删除所有生成的点DIV
function rmAllPix(nodeName){
var divs = document.getElementsByTagName("div");
for(var i=divs.length-1 ; i>0 ; i--){
if(divs[i].id==nodeName){
document.body.removeChild(divs[i]);
}
}
//
j_pre_xy[0] = 0;
j_pre_xy[1] = 0;
}
//MOUSE UP
function mouseUp(){
j_lb_down=false;
j_pre_xy[0] = 0;
j_pre_xy[1] = 0;
}
</script>
</head>
<body id="body" onmousemove="m(window.event);" onmousedown="j_lb_down=true;" onmouseup="m(window.event);mouseUp();">
<div name="test" id="j_div" style="position:absolute; top:600; left:200; border:1px solid black; font-size:14px;"></div>
<input type="button" onClick="rmAllPix('j_div_node');" value="Clear" />
</body>
</html>
<head>
<style>
#j_div_node {
border: 0;
background-color: blue;
display: block;
position: absolute;
}
</style>
<script language="javascript" type="text/javascript">
var j_lb_down = false;
var j_pixLen = 2;
var j_margin = 2;
var j_pre_xy = [0,0];
function m(evt){
//显示鼠标坐标
var obj = document.getElementById("j_div");
obj.innerHTML = evt.clientX +","+evt.clientY;
obj.style.top = evt.clientY+document.body.scrollTop+"px";
obj.style.left= (evt.clientX+15)+"px";
//画
if(j_lb_down){
//画点
pix(evt.clientX,evt.clientY);
//画连接线,判断不要从[0,0]画起
if(j_pre_xy[0]!=0&&j_pre_xy[1]!=0){
line(j_pre_xy,[evt.clientX,evt.clientY]);
}
//记录坐标
j_pre_xy[0] = evt.clientX;
j_pre_xy[1] = evt.clientY;
}
}
//画点
function pix(x,y){
var j_pix = document.createElement("div");
j_pix.id = "j_div_node";
j_pix.style.width = j_pixLen+"px";
j_pix.style.height = j_pixLen+"px";
j_pix.style.lineHeight = j_pixLen+"px";
j_pix.style.fontSize = j_pixLen+"px";
j_pix.style.top = y+document.body.scrollTop+"px";
j_pix.style.left= x+"px";
document.body.appendChild(j_pix);
}
//连接两个点
function line(xy1,xy2){
//控制间隔(间隔越小越卡)
var x_cha = Math.abs(xy1[0]-xy2[0]);
var y_cha = Math.abs(xy1[1]-xy2[1]);
if((x_cha>y_cha?x_cha:y_cha)<j_margin){
return;
}
for(var i=j_margin;i<=(x_cha>y_cha?x_cha:y_cha);i+=j_margin){
//百分比
var per = i/(x_cha>y_cha?x_cha:y_cha);
//用点连线,判断横纵坐标的加或减
pix(
xy1[0]+(xy1[0]>xy2[0]?-(per*x_cha): (per*x_cha)),
xy1[1]+(xy1[1]>xy2[1]?-(per*y_cha): (per*y_cha))
);
}
}
//删除所有生成的点DIV
function rmAllPix(nodeName){
var divs = document.getElementsByTagName("div");
for(var i=divs.length-1 ; i>0 ; i--){
if(divs[i].id==nodeName){
document.body.removeChild(divs[i]);
}
}
//
j_pre_xy[0] = 0;
j_pre_xy[1] = 0;
}
//MOUSE UP
function mouseUp(){
j_lb_down=false;
j_pre_xy[0] = 0;
j_pre_xy[1] = 0;
}
</script>
</head>
<body id="body" onmousemove="m(window.event);" onmousedown="j_lb_down=true;" onmouseup="m(window.event);mouseUp();">
<div name="test" id="j_div" style="position:absolute; top:600; left:200; border:1px solid black; font-size:14px;"></div>
<input type="button" onClick="rmAllPix('j_div_node');" value="Clear" />
</body>
</html>