Hi,
<input type="image" src="testimg.jpg" style="cursor:crosshair" onmousedown="showLayer();" onmouseup="fix();">
somit sollte in der theorie ein auswahlrechteck erstellt werden.
habe ich bisjetzt einen denkfehler ?
denn, die praxis zeigt, dass Layer1 einfach nicht fix-bleibt, sondern in der höhe und breite der mouse weiter folgt. onmousemove wird einfach nicht mehr gestoppt, und die bedingung onmouseup zeigt keine wirkung.kann mir jemand sagen warum das so ist, bzw. ob es eine lösung dafür gibt?
zur lösung dieses problems habe ich bisschen improvisiert und -wie man aus dem unteren code entnehmen kann- 2 div bereiche eingesetzt: (so wie unten dargestellt kann ich zwar ein rechteck erstellen, aber nicht immer; und es traten weitere probleme auf)
<input type="image" src="testimg.jpg" style="cursor:crosshair" onmousedown="showLayer();" onmouseup="hideLayer();">
function showLayer()
{
document.getElementById('layer3').style.visibility = "hidden";
x = window.event.offsetX;
x enthält jetzt eine Zahl.
document.getElementById('layer2').style.left = x;
left kann mit einer Zahl nichts anfangen, es wird eine Länge erwartet.
document.getElementById('layer2').style.top = y;
gleiches gilt für top usw.
x = h- parseInt(eval('document.getElementById("layer2").style.left'));
wozu soll hier bitte das eval dienen?
document.getElementById('layer2').style.width = parseInt(x);
auch width (und height) erlauben keine Zahl als Wert.
function fix()
{
x = h- parseInt(eval('document.getElementById("layer2").style.left'));
s.o.
document.getElementById('layer3').style.width = x;
s.o.
Zu dem von Dir angesprochenen Problem:
bei onmousedown setzt Du den Eventhandler für onmousemove. Dieser bleibt logischerweise solange erhalten, bis er durch einen anderen ersetzt wird.
Das geschieht aber im gezeigten Code (und insbesondere in der Funktion fix) nirgends.
cu,
Andreas
Warum nennt sich Andreas hier MudGuard?
Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.