onmousedown fortlaufend
S.Kaspari
- javascript
0 S.Kaspari0 holger kuehne
Hallo Community !
Ich habe folgendes Realisationsproblem bei JavaScript. Mit dem Befehl onmousedown kann ich etwas ausführen lassen, wenn jemand mit der maus auf etwas drückt...
Ich möchte jetzt aber etwas ausführen lassen, solange bis der Anwender die Maus wieder los lässt.
In nicht JavaScript sieht das so aus:
...
onmousedown="maus()"
...
function maus() {
do:
...
until mouse_nicht_mehr_down
}
Sebastian
Oh! Sorry für das Doppelposting... War nicht beabsichtig...
Hi
Wie waers, wenn du eine Variable definierst, die du =1 setzt und dann beim event onmouseup =2. Dann musst du nur noch in der Funktion maus() jeweils abfragen, ob die Variable=2 ist oder eben nicht. Allerdings solltest du bedenken, dass sowohl onmousedown als auch onmouseup im NS nur im Zusammenhang mit dem Event Objekt definiert sind. siehe z.B. <../../tebj.htm#a15>
Je nach dem Inhalt deiner Funktion maus() koennte es auch sein, dass du die Funktion mit clearTimeout() bzw clearInterval() abbrechen kannst. (Siehe z.B. <../../tecb.htm#a23>)
Tschau Holger
das klappt noch nicht ganz, denn bei der gedrückten maustaste will ich ein objekt so lange bewegen, bis ich die maus wieder loslasse...
Bei Mausklick und schieben erscheint auch ein "Du kannst das nicht schieben"-Zeichen, welches im I.E. eigentlich immer erscheint, wenn man ein Bild anklickt und versucht zu verschieben...
Hi
Warum sagst du das nicht gleich??
Fuer so ein Problem gibts doch schon mindestens eine schoene Loesung. Und zwar hier: <../../tfcb.htm>
dort wird die Loesung zwar nicht mit onmousedown/up beschrieben, aber ich denke eine Anpassung duerfte nicht so schwer sein.
Tschau Holger
Ich habe das Skript so umgebau, dass es mit dem Internet Explorer läuft, aber es läuft natürlich nicht...
Der Quelltext sieht wie folgt aus...
<script language="JScript">
<!--
var max = 4;
var Merker = 0;
function Merken()
{
if(a == 1 && Merker == 0) Merker = 1;
else if(a == 2 && Merker == 0) Merker = 2;
else if(Merker > 0) Merker = 0;
}
function Plazieren()
{
if(a == 1 && Merker == 1)
{
document.all.div1.style.zIndex = max; max+=1;
document.all.div1.style.left = window.event.x - 100;
document.all.div1.style.top = window.event.y - 125;
}
if(a == 2 && Merker == 2)
{
document.all.div2.style.zIndex = max; max+=1;
document.all.div2.style.left = window.event.x - 150;
document.all.div2.style.top = window.event.y - 200;
}
}
function bild1()
{
a = 1;
Merken();
}
function bild2()
{
a = 2;
Merken();
}
function bild1a()
{
a = 1;
Platzieren();
}
function bild2a()
{
a = 2;
Platzieren();
}
//-->
</script>
</head>
<body>
<div id="div1" style="position:absolute; top:200px; left:30px;">
<img src="felge1.gif" name="bild" onclick="bild1()" onmousemove="bild1a()">
</div>
<div id="div2" style="position:absolute; top:150px; left:30px;">
<img src="felge1.gif" name="bild2" onclick="bild2()" onmousemove="bild2a()">
</div>
Hi
Wieso veraenderst du auch ein funktionierendes Script so, das es nicht mehr laeuft und dann auch noch auf beiden Browsern ;-))
Du kannst das Script genau so wies da: <../../tfcb.htm> steht uebernehmen.
Nun zu Anpassung:
1. Die Anzahl der div's +deren Inhalt und positionierung Aendern.
2. In der Funktion merker():
Einfach bei zusaetzlichen divs z.B.beim 4:
else if(window.event.srcElement.id == "div4" && Merker == 0) Merker = 4;
wobei div4 der Name des divs ist! (genauso wie div1, div2..)
3. In der Funktion plazieren():
document.all.div1.style.left = window.event.x - 100;
document.all.div1.style.top = window.event.y - 125;
Die Zahlen am Schluss kommen durch die Breite und Hoehe der Layer (halbe Hoehe und halbe Breite) und muessen je nach der Groesse deiner Bilder oder was du auch immer im layer stehen hast veraendert werden.
4. Fuer Netscape einfach noch eine Weitere "Farbe" hinzufuegen inklusive aller Funktionen
Tschau Holger