mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Do 18.04.2024 04:59 Benutzername: Passwort: Auto-Login

Thema: [JS] Funktionen in einer schleife mehrmals ausführen vom 13.11.2006


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> [JS] Funktionen in einer schleife mehrmals ausführen
Autor Nachricht
taste of ink
Threadersteller

Dabei seit: 14.06.2005
Ort: Hamburg
Alter: 39
Geschlecht: Männlich
Verfasst Mo 13.11.2006 19:52
Titel

[JS] Funktionen in einer schleife mehrmals ausführen

Antworten mit Zitat Zum Seitenanfang

Ich habe folgendes Problem. Ich habe eine Anfahrts-Skizze in eine Div-Container und Navigations-Pfeile. Wenn man auf die Pfeile klickt kann man durch die Karte navigieren, je nach dem in welche Richtung man klickt (Das Bild das größer als der Kontainer ist wird bewegt). Funktioniert alles Super. Doch wenn ich drauf klicke bewegt sich die Karte um einen Pixel. Ich möchte das Sie sich so lange ich den Button drücke bewegt. Bis ich los lasse.

Hier die Javascriptfunktion
Code:


function move(way, targetid) {
//Übergeben wird der Weg (north, south,...) und die ID des Bilde (also der Landkarte)
var way,targetid; // Variablen
   
   var container_width = 480; // Höhe des Kontainers
   var container_height = 480;  // Breite des Kontainers
   
   var image_width = document.getElementById(targetid).width; // breite des Bildes
   var image_height = document.getElementById(targetid).height;  // Höhe des Bildes
   
   var current_right = parseInt(document.getElementById(targetid).style.right); // derzeitige Position (Right)
   var current_bottom = parseInt(document.getElementById(targetid).style.bottom); // derzeitige Position (Bottom)
   
   var default_right =400; // x-Position des Ziels (Right)
   var default_bottom =100; // y-Position des Ziels (Bottom)
   
   var max_right = image_width-container_width; // maximaler Wert für Right
   var max_bottom = image_height-container_height; // maximaler Wert für Bottom
   
   var min_right = 0; // minimaler Wert für Right
   var min_bottom = 80; // minimaler Wert für Bottom
   
   var step = 10; // Bewegungseinheiten in Pixel 
   var change_x = 0; // Bewegungsänderung x-Achse wird auf 0 gesetzt
   var change_y = 0; // Bewegungsänderung x-Achse wird auf 0 gesetzt

// Bewegungsänderungen je nach übergebener Richtung in Variable change_x bzw. change_y schreiben
   // Bewegung nach norden
   if(way=="north"){
   change_y = change_y - step;
   }
   
   // Bewegung nach nordosten
   else if(way=="northeast"){
   change_x = change_x + step;
   change_y = change_y    - step;   
   }
   
   // Bewegung nach osten
   else if(way=="east"){
   change_x = change_x + step;
   } 

   // Bewegung nach südosten   
   else if(way=="southeast"){
   change_x = change_x + step;   
   change_y = change_y + step; 
   }
   
   // Bewegung nach süden   
   else if(way=="south"){
   change_y = change_y + step; 
   }
   
   // Bewegung westen
   else if(way=="west"){
   change_x = change_x - step;
     }

   // Bewegung südwesten
   else if(way=="southwest"){
   change_x = change_x - step;   
   change_y = change_y + step;
     }   

   // Bewegung nordwesteb
   else if(way=="northwest"){
   change_x = change_x - step;   
   change_y = change_y - step;
     }         
 
   // Bewegung direkt zum Ziel
   else if(way=="target"){
   // abweichung zur Zielposition errechnen
   change_x = default_right - current_right;   
   change_y = default_bottom - current_bottom;   
     }   
      
   // ungültige Bewegung    
   else {
   alert("Undefinierte Parameter: way"); 
   } 
   
// Neuen Right- bzw. Bottom-Wert in Variable schreiben
   var new_right = current_right + change_x;
   var new_bottom = current_bottom + change_y;   
   
// Wenn Rand erreicht ist, nicht weiter gehen
   if (new_right<min_right) {new_right=min_right;}
   if (new_right>max_right) {new_right=max_right;}   
   if (new_bottom<min_bottom) {new_bottom=min_bottom;}         
   if (new_bottom>max_bottom) {new_bottom=max_bottom;}      
   
// Neuen Wert in die style-Eigenschaft schreiben
   document.getElementById(targetid).style.right = new_right+"px";
   document.getElementById(targetid).style.bottom = new_bottom+"px";   
}

Die funktion wird derzeit onmouseup bei den Jeweiligen Pfeilen ausgeführt
Danke schon mal....
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
sahnemuh

Dabei seit: 19.06.2003
Ort: /dev/null
Alter: 42
Geschlecht: Männlich
Verfasst Mo 13.11.2006 20:23
Titel

Antworten mit Zitat Zum Seitenanfang

onmousedown und onmouseup kannst du abfragen als events.
also machst du einfach ne schleife, die sich selbst wieder aufruft, bis mouseup getriggert wird.


http://www.quirksmode.org/js/events_mouse.html


Zuletzt bearbeitet von sahnemuh am Mo 13.11.2006 20:26, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
Anzeige
Anzeige
taste of ink
Threadersteller

Dabei seit: 14.06.2005
Ort: Hamburg
Alter: 39
Geschlecht: Männlich
Verfasst Mo 13.11.2006 20:39
Titel

Antworten mit Zitat Zum Seitenanfang

Danke sahnemuh. Ich habe mal zum Testen
Code:

var x = 1;
   do {
.....
}
while (x < 10);

ausprobiert um mal 9 Schritte nacheinander zu machen. Aber er berechnet die 9 Schritte und zeigt Sie mir dann. statt mit jeden Schritt einzeln zu zeigen.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
 
Ähnliche Themen [php] ob_start() und php ausführen?
php offline ausführen
Per Befehl JS nur in IE ausführen?
Jar Datei ausführen
php5 ausführen mit _.htaccess
Script nur einmal ausführen
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.