ZeroEnna
Erfahrenes Mitglied
Hallo zusammen
Ich will gerade eine kleine Drag & Drop Funktion mit JavaScript realisieren. Ich habe zwei Klassen erstellt: mousePos, welche die aktuelle Mausposition enthält und scale_n_drag, welche für das Verschieben des Elementes zuständig ist.
Nun habe ich aber das Problem, dass die einzelnen Eigenschaften wie z.B. dragable (scale_n_drag) ihre Werte verlieren. Bei Mousedown speichere ich die ID des Objektes in diese Variable, und beim Mouseup gebe ich diese per alert wieder aus (nur zu Testzwecken, wird später nicht mehr so sein). Beim Mousedown hat die Variable noch den richtigen wert, wenn ich sie aber bei Mouseup ausgebe, kommt nur 'undefined'. Der Code sieht wie folgt aus:
Wisst ihr vielleicht wo der Fehler liegt?
mfG
ZeroEnna
Ich will gerade eine kleine Drag & Drop Funktion mit JavaScript realisieren. Ich habe zwei Klassen erstellt: mousePos, welche die aktuelle Mausposition enthält und scale_n_drag, welche für das Verschieben des Elementes zuständig ist.
Nun habe ich aber das Problem, dass die einzelnen Eigenschaften wie z.B. dragable (scale_n_drag) ihre Werte verlieren. Bei Mousedown speichere ich die ID des Objektes in diese Variable, und beim Mouseup gebe ich diese per alert wieder aus (nur zu Testzwecken, wird später nicht mehr so sein). Beim Mousedown hat die Variable noch den richtigen wert, wenn ich sie aber bei Mouseup ausgebe, kommt nur 'undefined'. Der Code sieht wie folgt aus:
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>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Unbenanntes Dokument</title>
<style type="text/css">
body {
margin: 0;
padding: 0;
}
</style>
<script type="text/javascript">
function mousePos()
{
this.x = 0;
this.y = 0;
this.setPos = function(e)
{
self.status = this.x;
if(document.all)
{
this.x = event.clientX + document.body.scrollLeft;
this.y = event.clientY + document.body.scrollTop;
}
else
{
this.x = e.pageX;
this.y = e.pageY;
}
}
this.getX = function()
{
return this.x;
}
}
this.scale_n_drag = function()
{
this.width = 0;
this.height = 0,
this.dragable = false;
this.pos = new Array();
this.dim = new Array();
this.mousePos = new Array();
this.mouse = new mousePos();
this.init=function(w, h)
{
this.width = w;
this.height = h;
}
this.setDragable=function(id)
{
this.mousePos['x'] = this.mouse.x;
this.mousePos['y'] = this.mouse.y;
this.dragable = id;
alert(this.dragable);
document.onmousemove = this.move;
document.onmouseup = this.unsetDragable;
}
this.move=function(e)
{
if(this.dragable)
{
if(document.all)
{
this.pos['x'] = event.clientX + document.body.scrollLeft;
this.pos['y'] = event.clientY + document.body.scrollTop;
}
else
{
this.pos['x'] = e.pageX;
this.pos['y'] = e.pageY;
}
document.getElementById(this.dragable).style.marginLeft = (document.getElementById(this.dragable).offsetLeft + this.pos['x'] - this.mousePos['x'])+'px';
document.getElementById(this.dragable).style.marginTop = (document.getElementById(this.dragable).offsetTop + this.pos['y'] - this.mousePos['y'])+'px';
}
}
this.unsetDragable=function()
{
alert(this.dragable);
document.onmousemove = this.mouse.setPos;
document.onmouseup = null;
this.dragable = false;
}
}
if(document.captureEvents)
{
document.captureEvents(Event.MOUSEMOVE | Event.MOUSEDOWN);
}
var m = new mousePos();
var d = new scale_n_drag();
document.onmousemove = m.setPos;
</script>
</head>
<body>
<div style="width: 200px; height: 200px; background-color: #CCCCCC;" id="con" onmousedown="d.setDragable('con');">
</div>
</body>
</html>
Wisst ihr vielleicht wo der Fehler liegt?
mfG
ZeroEnna