kostenloser Webspace werbefrei: lima-city


setInterval für unterschiedliche Objekte

lima-cityForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    silecom

    silecom hat kostenlosen Webspace.

    Hi,

    hab mich jetzt schon ne Zeit lang mit dem folgenden Code beschäftigt, komme aber nicht weiter und bitte um Rat.

    Ich möchte gerne Intervalle für verschiedene Objekte setzen. Dabei speichere ich die Objekte in einem Array ab und füge sie bei Bedarf hinzu.
    In der for-Schleife prüf ich obs das Objekt gibt und wenn ja, dann soll er das Intervall erneut setzen (je nachdem ob die timer variable leer ist oder nicht).

    Das funktioniert aber nicht so wie ich mir das vorstelle und ich weiss nicht warum.

    Hoffe mir kann jemand dabei helfen. Danke.

    function CInterval()
    	{
    		this.interval_timer = "";
    		this.param = "";
    		var self = this;
    		
    		this.Interval = function(param)
    		{
    			this.param = param;
    			if(this.interval_timer == "")
    			{
    				this.interval_timer = setInterval("this.IntervalCode()", 1000);
    			}
    		}		
    		
    		IntervalCode = function()
    		{
    			for(i = 0; i < 10; i++)
    			{
    				document.getElementById('offsetHeight').innerHTML += self.param + '.';
    			}
    			clearInterval(self.interval_timer);
    			self.interval_timer = "";
    		}
    	}
    	
    	function xInterval(param)
    	{
    		var index = -1;
    
    		for(var i = 0; i < obj_array.length; i++)
    		{
    			if(obj_array[i] != "undefined" & obj_array[i].param == param)
    			{
    				index = i;
    				obj_array[i].Interval(param);
    			}
    		}
    		if(index == -1)
    		{
    			var x = new CInterval();
    			x.Interval(param);
    			obj_array.push(x);
    		}
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. e********l

    Öhm, kannst du den Code mit dem entsprechenden HTML liefern? Der Javascript Code alleine nützt zum testen nichts. Da er keinen Fehler produziert.

    Aber was mir auffällt ist das du ein Funktionsobjekt erstellst und nicht die JSON Notation verwendest. Hat das einen Grund?

    Ansonsten ist vorerst nichts zu mäkeln ;)
  4. Autor dieses Themas

    silecom

    silecom hat kostenlosen Webspace.

    Hab die Datei jetzt hochgeladen:
    http://silecom.lima-city.de/setInterval.html

    Ich komm einfach nicht dahinter, warum er das Intervall nicht mehr zurücksetzt.
    Hat man das erste Objekt erzeugt (setzt er sich immer zurück), aber sowie man das zweite erzeugt und dann nochmals draufklickt ist es aus...

    Wegen JSON Notation, habe davon noch nie etwas gehört und heut mal schnell drüber geschaut, aber eher weniger davon verstanden, vor allem im Bezug auf mein Beispiel?

    Soll das dann so aussehen?, und wenn ja, wie unterscheidet man hier zwischen private und public?:
    var CInterval = 
    {
    	interval_timer : "",
    	param : "",
    	IntervalCode : function()
    	{
    		...
    	}
    };


    Beitrag zuletzt geändert: 1.7.2009 20:51:58 von silecom
  5. e********l

    So, ich denke ich weiß wo der Fehler steckt ^^
    Im Funktionsliteral von "this.Interval" greifst du via "this.interval_timer" auf deine Referenz zu. Allerdings bezieht sich this an der Stelle auf die Funktion und nicht auf den Literal. Wenn du es nach self.interval_timer abänderst sollte es gehen. Gleiches gilt auch für this.param.

    In der darauf folgenden Funktion IntervalCode hattest du es bereits so gemacht ;)

    Hoffe das löst dein Problem.

    @JSON Notation: Ja...war die letzten 1 1/2 Jahre Prototype gewohnt und die nutzen das fast nur. Hab nun seit dieser Woche "Nur das beste von Javascript" und da ist u.a. die von dir genutzte Schreibweise mit Closures drin :)

    Gruß Evil
  6. Autor dieses Themas

    silecom

    silecom hat kostenlosen Webspace.

    Also ich habs bereits so gelöst dass ich jetzt bei dem Object Loop statt auf den Timer zuzugreifen einfach ein neues Objekt erzeuge, ich verstehs zwar net so ganz aber es funktioniert -.-

    Jedenfalls, ich habs jetzt auch mit deinem Lösungsansatz versucht, funktioniert aber auch nicht.

    Innerhalb von public Methoden kann ich normal auf this zugreifen, aber in private Methoden existiert "this" nicht und ich muss das mit self oder einer anderen Variable ausgleichen dass ich darauf Zugriff habe.
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!