funktion abbrechen

  • Themenstarter Themenstarter CaptnCrunch
  • Beginndatum Beginndatum
C

CaptnCrunch

hallo...

habe da ein, ich denke eher kleines, verständigungsproblem..

zum groben: .. ichhabe ein php-script was einen ordner ausliest und die dortigen files (bilder) in eine tabelle packt welche ich mit javascript wie ein marquee laufen lasse.

so weit so gut...

.. ich wollte nun den onmouseover-handler abfragen und bei true die funktion die das ganze bewegt stoppen..

da ich in js schon immer ne niete war, hab ich leider keinen plan wie ich des realisieren könnte .. habe es mit funktionen versucht aber es geht net..

wenn mir jmd nen tip geben könnte wäre ich echt dankbar..

Code:
//-- status setzen wenn 0 dann sollte slide() ausgeführt werden
var slide_status = 0;


//-- init halt :)
function init() {
	if(document.getElementById)	{
		obj = document.getElementById("pics");	
		obj.style.left = 190;				
		}
	}



//-- der layer wird bewegt und der richtige abstand wie weit bewegt werden soll wird errechnet	
function slide(slide_status) {	
	
	if(document.getElementById)	{
		
		var anz = "<?php echo $count; ?>";
		var abstand = 190 - (anz*124);		
		
		if(parseInt(obj.style.left) > abstand ) {
		
			while (slide_status == 0) { //-- hier frage ich den status ab.. 
			obj.style.left = parseInt(obj.style.left) - 2 + "px";			
			setTimeout("slide()",20);
			}		
						
			} else { 
					obj.style.left = 190; 
					slide();
					}
		}
		return slide_status;		
	}


//-- mit onmouseover/onmouseout rufe ich jeweils stop()/go() auf		
function stop(slide_status) {	
	var slide_status = 1;	
	return slide_status;
	}

function go(slide_status) {	
	slide_status = 0;
	return slide_status;
	}
 
Also wenn ich das richtig sehe, musst du setTimeout("slide()",20); aus der while - Schleife herausnehmen und hinter die Schleife setzen, oder in der Funktion go() die Funktion slide() erneut aurufen. Sonst läuft es nicht mehr weiter, da nirgendwo erneut die Funktion slide() gestartet wird.

Außerdem denke ich kannst du return slide_status; weg lassen, und brauchst slide_status auch nicht immer an die einzelnen Funktionen zu übergeben, da du slide_status global deklariert hast.

Ich habe mal ein kleines Script geschrieben, es funktioniert. Du musst es nur entsprechend deinen Bedürfnissen erweitern.

Javascript:
var status = 0;

function init() {
        obj = document.getElementById("pics");
        obj.style.left = 500 + "px";
        move();
}

function move(){
        if(status == 0){
           obj = document.getElementById("pics");
           t = 10; // Zeit
           step = 1;
           y_position = parseInt(obj.style.left);
           y_position = y_position - step;
           obj.style.left = y_position + "px";
        }
        window.setTimeout("move()", t);
}

function stop() {
        status = 1;
}

function go() {
        status = 0;
}

Der Aufruf der Funktion init() wird am ende Des HTML Dokuments aufgerufen.

HTML:
<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">

 <div onMouseOut="go()" onMouseOver="stop()" id="pics">
  <table cellspacing="0" cellpadding="0">
   <tr>
    <td><img src="bild1.jpg" width="100" height="66" border="0" alt=""> </td>
    <td><img src="bild2.jpg" width="100" height="66" border="0" alt=""> </td>
    <td><img src="bild3.jpg" width="100" height="66" border="0" alt=""> </td>
   </tr>
  </table>
 </div>
 <script language="JavaScript">
   <!--
    init();
   //-->
 </script>
</body>

Ich hoffe es hilft dir weiter.
 

Neue Beiträge

Zurück