Position einer Ebene abfragen und Ereignis auslösen
sunny
- javascript
Hallo liebes Forum!
Ich hab mal wieder eine Frage!
Und zwar möchte ich folgendes machen:
Ich hab eine Seite in der es einen div-Bereich gibt, der sich bewegt.
Nun sollte, wenn das div (id="AnimLayer) eine bestimmte Position erreicht, eine bestimmte Aktion passieren ... nämlich zB. ein anderes div angezeigt werden statt diese oÄ.
Aber soweit bin ich noch gar nicht - ich möchte erst einmal die Abfrage richtig hinkriegen.
Meine Frage jetzt - ist dieser Lösungsansatz brauchbar?
var x;
var myPosition;
var deletepx;
function Coords() {
myPosition = document.getElementById("AnimLayer").style.left;
deletepx = myPosition.indexOf("px");
x = myPosition.substring(0,deletepx);
{
while(x < 200) {
}
if(x == 200) {
alert("Position erreicht!");
}
else {
}
}
}
Irgendwie hab ich da eine Endlosschleife ausgelöst - kann mir da vielleicht jemand weiterhelfen?
Würd mich freuen wenn mich jemand ein bisschen in die richtige Richtung stupst!
Lg,
sunny :)
Hallo,
Aber soweit bin ich noch gar nicht - ich möchte erst einmal die Abfrage richtig hinkriegen.
vieleicht hättest du mit dem bewegen des Layers anfangen sollen...
dazu benötigst du nämlich eine onmousemove-Ereignismethode.
In selbger Methode muss dann natürlich auch die Abfrage der Position rein.
also das hier:
if(x == 200) {
alert("Position erreicht!");
}
Irgendwie hab ich da eine Endlosschleife ausgelöst -
aua, hier ist deine Endlosschleife:
while(x < 200) {
else {
}
else ohne was drin? kann weg
Gruss,
Kube
Hi again,
Aber soweit bin ich noch gar nicht - ich möchte erst einmal die Abfrage richtig hinkriegen.
vieleicht hättest du mit dem bewegen des Layers anfangen sollen...
Das ist natürlich schon alles fertig! :)
In einem externen Script von einem Kollegen. Das sollte nicht verändert werden.
aua, hier ist deine Endlosschleife:
while(x < 200) {
Na ja ich weiß dass da das Problem liegt.
Aber wie kann ich sagen - löse das Ereignis erst aus wenn sich das Element an dieser Position befindet? Ich wollte ja wissen ob das so möglich ist!?
Die Funktion wird übrigens nicht per Eventhandler ausgelöst sondern einfach im <body> aufgerufen.
Lg,
sunny :)
Hallo,
Das ist natürlich schon alles fertig! :)
In einem externen Script von einem Kollegen. Das sollte nicht verändert werden.
dann hast du ganz schlechte Karten.
Aber wie kann ich sagen - löse das Ereignis erst aus wenn sich das Element an dieser Position befindet? Ich wollte ja wissen ob das so möglich ist!?
Nein, die möglichen Ereignisse sind im JS fest vorgegeben. Das von dir benötigte Ereignis (onmousemove) wird aber bereits von deinem Kollegen verbraten.
Da fällt mir nur eine Alternative ein: (würde ich aber NIE so machen)
schreibe den Check etwa so
function check_div()
{
//1. zuerst die Koordinaten des divs holen
//2. dann deine if-Anweisung rein
//3. diese Funktion nach 10 millisekunden nochmal aufrufen und zwar so:
window.setTimeout( "check_div()", 10 )
}
und diese Funktion dann im body-Tag aufrufen.
Die Funktion wird übrigens nicht per Eventhandler ausgelöst sondern einfach im <body> aufgerufen.
Lg,
sunny :)
Hallo!
Aber wie kann ich sagen - löse das Ereignis erst aus wenn sich das Element an dieser Position befindet? Ich wollte ja wissen ob das so möglich ist!?
Nein, die möglichen Ereignisse sind im JS fest vorgegeben. Das von dir benötigte Ereignis (onmousemove) wird aber bereits von deinem Kollegen verbraten.
Allerdings - es geht gar nicht um onmousemove, das div bewegt sich anhand einer function die den Weg berechnet den das Ding sozusagen laufen soll.
Und wenn es sich an einer bestimmten Stelle befindet sollte es stoppen und ein anderes div angezeigt werden.
Da sollte wohl doch am besten das Script des Kollegen mitgeändert werden, werd mich mit diesem nochmal kurzschließen.
Da fällt mir nur eine Alternative ein: (würde ich aber NIE so machen)
schreibe den Check etwa sofunction check_div()
{
//1. zuerst die Koordinaten des divs holen
//2. dann deine if-Anweisung rein
//3. diese Funktion nach 10 millisekunden nochmal aufrufen und zwar so:
window.setTimeout( "check_div()", 10 )
}und diese Funktion dann im body-Tag aufrufen.
Das könnte funktionieren - stimmt!
Aber ist wohl sehr Ressourcen-intensiv ... und das wo ohnehin schon ein aufwändiges Script abläuft ...
Lg,
sunny