pleibling: problem mit window.clearInterval()

hallo,

ich hatte hier: http://forum.de.selfhtml.org/archiv/2009/5/t186932/#m1241898 ein problem geschildert (leider kann ich nicht mehr auf den artikel antworten, da der schon im archiv ist).

problem ist, das ich werte abfrage und darstelle (aktualisierung jede sekunde), wenn diese aber nicht mehr benötigt werden, möchte ich das aktualisieren abschalten.

rouven hatte mir auch einen tip gegeben, denn ich nun ausprobiere (hole die werte nun statt mit window.setTimer mit window.setInterval, da man diese wieder mit window.clearInterval(timername) wieder deaktivieren können soll.

das abholen und visualisieren der werte klappt schon prima, nur bekomme ich den timer nicht gestoppt.

seht ihr den fehler?!?

hier mal der source:

<html>  
<head>  
<title>  
Testseite iphone  
</title>  
  
<script type="text/JavaScript">  
  
  
  	function getData(device, helligkeit, batterie, signal)  
	{  
    if (typeof window.ActiveXObject != 'undefined' )  
			xmlDoc = new ActiveXObject("Microsoft.XMLHTTP");  
		else  
			xmlDoc = new XMLHttpRequest();  
  
        var url = "GetValue.php?id=" + helligkeit;  
		xmlDoc.open("GET", url , false);  
		xmlDoc.send( null );  
        document.getElementById('h'+device).innerHTML=xmlDoc.responseText;  
  
        var url = "GetValue.php?id=" + batterie;  
		xmlDoc.open("GET", url , false);  
		xmlDoc.send( null );  
        document.getElementById('b'+device).innerHTML=xmlDoc.responseText;  
  
        var url = "GetValue.php?id=" + signal;  
		xmlDoc.open("GET", url , false);  
		xmlDoc.send( null );  
        document.getElementById('s'+device).innerHTML=xmlDoc.responseText;  
  
    }  
  
    function startTimer() {  
        var aktiv = window.setInterval("getData('14', '18700', '35715', '46630')", 1000);  
    }  
  
    function stopTimer() {  
        window.clearInterval(aktiv);  
    }  
  
  
</script>  
  
</head>  
<body>  
Helligkeit: <div id="h14">Get ...</div><br>  
Batterie: <div id="b14">Get ...</div><br>  
Signal: <div id="s14">Get ...</div><br>  
<input type=button value=Start onclick="startTimer()">  
<input type=button value=Stop onclick="stopTimer()">  
  
  
</html>
  1. Hi,

    (hole die werte nun statt mit window.setTimer mit window.setInterval, da man diese wieder mit window.clearInterval(timername) wieder deaktivieren können soll.

    window.setTimeout() steht window.clearTimeout() gegenüber, diese Änderung war also hierzu nicht nötig.

    das abholen und visualisieren der werte klappt schon prima, nur bekomme ich den timer nicht gestoppt.

    seht ihr den fehler?!?

    Ja:

    function startTimer() {

    var aktiv = window.setInterval("getData('14', '18700', '35715', '46630')", 1000);
        }

    function stopTimer() {
            window.clearInterval(aktiv);
        }

      
    Der Funktion stopTimer steht keine Variable namens 'aktiv' zur Verfügung. In der Funktion startTimer hast Du eine solche lokal deklariert, sie stirbt mit dem Beenden dieser Funktion.  
      
    Cheatah  
    
    -- 
    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|  
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html  
    X-Will-Answer-Email: No  
    X-Please-Search-Archive-First: Absolutely Yes
    
    1. stimmt, hatte ich auch gerade gesehen - habe die nun oben vor dem schleifenblock deklariert, nun geht es auch.

      danke für deine hilfe :).

  2. kann das daran liegen, das ich von der funktion stoptimer nicht auf die variablen der funktion starttimer zugreifen kann (ich meine in c# ist das so, dann müssen die variablen anders deklariert werden - aber das ist doch nicht in javascript so oder)?

    im firebug (firefox) bekomme ich keine fehlermeldung beim stoppen (was ja nicht klappt), bei ie bekomme ich aber die fehlermeldung das "aktiv" undefiniert ist. auch da stoppt der timer nicht.