JS Funktion klappt irgendwie nicht

Callboy

Mitglied
Hi,

wie kann man auf eine js funktion abwechselnd etwas abspielen, wenn diese Funktion auf einem BODY TAG per onload() aufgerufen wird ?

Komme da irgendwie nicht klar
Trotz der if abfrage wird ständig die gleiche abzweigung ausgegeben *heul...

Brauche dringend euer Hilfe

MfG
Callboy
 
Hi,

danke für deine schnelle Antwort...
Ja sicher werde es jetzt nach holen und hofe das ihr mir jetzt besser und schneller Helfen könnt...

Hier ist die Code schnippsel...

PHP:
<script language='JavaScript'>
<!--
var test = false;

bName = navigator.appName;
	bVer = parseInt(navigator.appVersion);
	        if (bName == "Netscape" && bVer == 3) ver = "n3";
	        else if (bName == "Netscape" && bVer == 2) ver = "n2";
	        else if (bName == "Netscape" && bVer >= 4) ver = "n4";
	        else if (bName == "Microsoft Internet Explorer" && bVer == 2) ver = "e3";
	        else if (bName == "Microsoft Internet Explorer" && bVer > 2) ver = "e4";

	if (navigator.appVersion.indexOf("Mac") != -1) ver+="m";

function shake(){
	    
	    if(test){
	        if (ver == "n4" || ver == "n4m" || ver == "e4" || ver == "e4m"){
	                for (i = 20; i > 0; i--){
		                for (z = 20; z > 0; z--){
		                        self.moveBy(0,i);
		                        self.moveBy(i,0);
		                        self.moveBy(0,-i);
		                        self.moveBy(-i,0);
		                }
					}

	        }
                        test = true;
	        alert(test);
	    }
	    else{
	        test = false;
	        alert(test);
	    }
	}
</script>

Code:
<body onLoad='shake();'>

Mein Zweck des ganzen ist, dass wenn die Seite einmal geladen ist bei der shake() funktion die erste if abzweigung abgespielt wird...
Ansonsten soll immer (solange die Seite auch aktive ist) die else zweig des ifs abspielen...

Hoffe Ihr konntet mich jetzt verstehen und hoffe somit, dass Ihr mir jetzt besser Helfen könnt

MfG
Callboy
 
Mal abgesehen vom Sinn dieser "Window-Shake"-Scripte...

... was bringt es, die Variable "test" auf true zu setzen, wenn sie schon true ist, und umgekehrt auf false, wenn sie false ist?

Kann es sein, dass Du es so gemeit hast:
PHP:
if(!test){
?

Gruß
.
 
Du musst in deiner if-Abfrage prüfen, ob Test 'false' ist und nicht 'true', da du es oben mit false initialisierst.

Also entweder
Code:
if(test == false)
oder
Code:
if (!test)

Grüße
 
Hi,

danke erst einmal für euer Hilfe...
Aber weder noch ist von denen was ihr schreibt richtig und es funktioniert auch nicht...
Wie denn auch, der Fehler liegt ja nicht ob der if true prüfen soll oder false sondern, das problem liegt darin, wenn jedesmal die Seite neu geladen wird, wird der Variable test immer auf false gesetzt und somit kommt nur das ein oder das andere if zweig im sinne...

Leider mache ich dort einen denkfehler, denn irgendwie muss die Seite sich merken können, dass der shake funktion einmal aufgerufen wurde und dann darf es nie weider auf gerufen...

Bitte bitte um Hilfe, irgendwie muss es doch zu lösen sein
Kann mir hier denn keiner Helfen ?

MfG
Callboy
 
Zuletzt bearbeitet:
Ok, jetzt habe ich verstanden ( ^^ )

Du wirst Dir den Wert irgendwo merken müssen - bei einem Reload bietet sich da z.B. ein Cookie an (wenn Du nicht mit PHP und Sessions arbeitest). ;)

Such mal im Forum nach dem Begriff.

Gruß
.
 
Was hälst Du davon, einfach auf das Reload zu verzichten.

Du kannst Die Funktion shake doch mittels setTimeout einfach am Ende noch mal aufrufen.
Dann bekommst Du doch was Du willst, oder?

So rufst Du shake nach 300 ms wieder auf:

function shake()
{
...
window.setTimeout("shake();", 300);
};

vop
 
Callboy hat gesagt.:
Hi,

danke erst einmal für euer Hilfe...
Aber weder noch ist von denen was ihr schreibt richtig und es funktioniert auch nicht...
Wie denn auch, der Fehler liegt ja nicht ob der if true prüfen soll oder false sondern, das problem liegt darin, wenn jedesmal die Seite neu geladen wird, wird der Variable test immer auf false gesetzt und somit kommt nur das ein oder das andere if zweig im sinne...

Leider mache ich dort einen denkfehler, denn irgendwie muss die Seite sich merken können, dass der shake funktion einmal aufgerufen wurde und dann darf es nie weider auf gerufen...

Bitte bitte um Hilfe, irgendwie muss es doch zu lösen sein
Kann mir hier denn keiner Helfen ?

MfG
Callboy

Hi, das mit Cookies ist eine gute idee aber würde ich nicht direkt anwenden, denn viele deaktivieren diesen Funktion...
Aber PHP wäre hier ideal aber wie könnte ich dies irgendwie mit der shake() kombinieren ?

MfG
Callboy
 
vop hat gesagt.:
Was hälst Du davon, einfach auf das Reload zu verzichten.

Du kannst Die Funktion shake doch mittels setTimeout einfach am Ende noch mal aufrufen.
Dann bekommst Du doch was Du willst, oder?

So rufst Du shake nach 300 ms wieder auf:

function shake()
{
...
window.setTimeout("shake();", 300);
};

vop


Hi,

danke für deine Hilfe ist auch eine super idee aber auch dies ist in meinem Fall nicht gebrauchbar, denn egal wo ich die funktion aufrufe (oben oder unten) wird der funktion shake bei mir öfters als nur eine mal durch laufen, denn sobald die seite jedesmal neu geladen wird, wird alles neu geladen...

Dein Beispiel ist nichts anderes wie meins ausser bei deinem ist eine Zeitverzögerung...

MfG
Callboy
 

Neue Beiträge

Zurück