Hallo,
Ich habe ein Script geschrieben, indem man mittels zweier Klicks eine Linie zwischen den beiden angeklickten Stellen zeichnen kann.
Das Ganze funktioniert auch schon ganz gut nur liegen die Endpunkte nicht genau auf den angeklickten Stellen. Außerdem denke ich, dass das Script durchaus noch zu verbessern ist. Habt ihr da ein paar Vorschläge?
Ach ja: Bitte keine fertigen Scripte aus externen Quellen, ich würde gerne wissen wo mein Denkfehler liegt. 
MfG Lük
Ich habe ein Script geschrieben, indem man mittels zweier Klicks eine Linie zwischen den beiden angeklickten Stellen zeichnen kann.
Das Ganze funktioniert auch schon ganz gut nur liegen die Endpunkte nicht genau auf den angeklickten Stellen. Außerdem denke ich, dass das Script durchaus noch zu verbessern ist. Habt ihr da ein paar Vorschläge?
Code:
<script type="text/javascript">
clicks = 0;
var a, b = new Array();
document.onclick = function(e) {
clicks++;
if (clicks == 1) {
a = new Array(e.pageX, e.pageY);
} else if (clicks == 2) {
b = new Array(e.pageX, e.pageY);
line(a, b);
clicks = 0;
}
}
function line(point1, point2) {
if (point1[0] == point2[0] && point1[1] == point2[1]) { alert("Ungültige Koordinaten"); return; }
bot = point2;
top = point1;
//höchsten bzw. am weitesten links liegenden punkt als top bestimmen
if (point1[1] > point2[1]) {
top = point2;
bot = point1;
} else if (point1[1] == point2[1]) {
if (point1[0] < point2[0]) {
top = point2;
bot = point1;
}
}
//richtung des bot punktes im verhältniss zu top
direction = "R";
if (top[0] > bot[0]) {
direction = "L";
} else if (top[0] == bot[0]) {
direction = "V";
}
// zeichenbereich ermitteln
parent = document.createElement("div");
drawArea = new Array();
drawArea[1] = bot[1] - top[1];
if (direction == "L") {
drawArea[0] = top[0] - bot[0];
parent.style.marginLeft = bot[0];
} else if (direction == "R") {
drawArea[0] = bot[0] - top[0];
parent.style.marginLeft = top[0];
} else {
drawArea[0] = 1;
}
parent.style.marginTop = top[1];
parent.style.width = drawArea[0];
parent.style.height = drawArea[1];
parent.style.position = "absolute";
document.getElementById("table").appendChild(parent);
//pixelachse ermittlen
if (drawArea[1] >= drawArea[0]) {
pxPerLayer = drawArea[1] / drawArea[0];
top = 0;
if (direction == "R") {
for (i = 0; i <= drawArea[0]; i++) {
el = document.createElement("div");
el.style.marginLeft = i;
el.style.marginTop = top;
el.style.backgroundColor = "red";
el.style.width = "1px";
el.style.height = pxPerLayer + "px";
el.style.position = "absolute";
parent.appendChild(el);
top += pxPerLayer;
}
} else if (direction = "L") {
for (i = drawArea[0]; i >= 0; i--) {
el = document.createElement("div");
el.style.marginLeft = i;
el.style.marginTop = top;
el.style.backgroundColor = "red";
el.style.width = "1px";
el.style.height = pxPerLayer + "px";
el.style.position = "absolute";
parent.appendChild(el);
top += pxPerLayer;
}
}
} else if (drawArea[1] < drawArea[0]) {
pxPerLayer = drawArea[0] / drawArea[1];
left = 0;
if (direction == "R") {
for (i = 0; i <= drawArea[1]; i++) {
el = document.createElement("div");
el.style.marginLeft = left;
el.style.marginTop = i;
el.style.backgroundColor = "red";
el.style.width = pxPerLayer + "px";
el.style.height = "1px";
el.style.position = "absolute";
parent.appendChild(el);
left += pxPerLayer;
}
} else if (direction = "L") {
for (i = drawArea[1]; i >= 0; i--) {
el = document.createElement("div");
el.style.marginLeft = left;
el.style.marginTop = i;
el.style.backgroundColor = "red";
el.style.width = pxPerLayer + "px";
el.style.height = "1px";
el.style.position = "absolute";
parent.appendChild(el);
left += pxPerLayer;
}
}
}
}
</script>
<div id="table"></div>

MfG Lük