[JS] setInterval blijft niet loopen in IE

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • nickman
  • Registratie: Augustus 2002
  • Laatst online: 12-05-2024

nickman

webmaster of http://www.bwf.be

Topicstarter
Ik heb een stukje code geschreven om de achtegrondkleur van een element te laten faden.
dit werkt perfect in FF en Opera normaalgezien ook, maar in IE blijft mijn setInterval niet loopen...

Iemand enig idee hoe ik die kan oplossen?

JavaScript: file.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
        function fadeRed(targetid) {
            var currElem = document.getElementById(targetid);
            
            if (currElem) {
                var color = currElem.style.backgroundColor;
                color = color.substring(4,color.length - 1);
                colorArray = color.split(",");
    
                var R = parseInt(colorArray[0]);
                var G = parseInt(colorArray[1]);
                var B = parseInt(colorArray[2]);
    
                if (G < 255) {
                    G = G + 15;
                    var hexcolor = RGBtoHex(255,G,G);
                    
                    currElem.style.backgroundColor = hexcolor;
                } else {
                    clearInterval(TEMP[targetid]);
                }
            } else {
                alert("element niet gevonden met id : "+ targetid);
            }
        }

        function handleUpdate(content) {
            if (content != "false") {
                var values = content.split(":");
                var id = values[0];

                document.getElementById(id +"_add").disabled = false;
                document.getElementById(id +"_sub").disabled = false;
                var currElement = document.getElementById(id);


                if (currElement.value > values[1]) {
                    currElement .style.backgroundColor = "FF0000";
                    
                    TEMP[id] = setInterval("fadeRed('"+id+"')", 5);
                } else {
                    currElement .style.backgroundColor = "00FF00";
                    TEMP[id] = setInterval("fadeGreen('"+id+"')", 5);
                }                   

                currElement .value = values[1];
                
            } else {
                alert("Er is iets mis gelopen!");
            }
        }


fadeRed is nagenoeg identiek aan fadeGreen, TEMP is een array die ik bijhoud aangezien een meerdere elementen zijn die tegelijk kunnen faden.

greetz!

Make it idiot proof and someone will make a better idiot


Acties:
  • 0 Henk 'm!

  • Bozozo
  • Registratie: Januari 2005
  • Laatst online: 20-02 16:10

Bozozo

Your ad here?

Je kunt een interval beter zo instellen:
JavaScript:
1
2
3
4
5
var timerid = setInterval(function(){ somefunction(arg1,arg2) },delay);

function somefunction(a,b) {
  ...
}


Misschien helpt dat.

TabCinema : NiftySplit


Acties:
  • 0 Henk 'm!

  • nickman
  • Registratie: Augustus 2002
  • Laatst online: 12-05-2024

nickman

webmaster of http://www.bwf.be

Topicstarter
Heb het aangepast naar
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
        function fadeGreen(targetid) {
            alert("YAY, id : "+ targetid);
            var currElem = document.getElementById(targetid);
            
            if (currElem) {
                var color = currElem.style.backgroundColor;
                color = color.substring(4,color.length - 1);
                colorArray = color.split(",");
    
                var R = parseInt(colorArray[0]);
                var G = parseInt(colorArray[1]);
                var B = parseInt(colorArray[2]);
    
                if (R < 255) {
                    R = R + 15;
                    var hexcolor = RGBtoHex(R,255,R);
                    
                    currElem.style.backgroundColor = hexcolor;
                } else {
                    clearInterval(TEMP[targetid]);
                }
            } else {
                alert("element niet gevonden met id : "+ targetid);
            }
        }

        function handleUpdate(content) {
            if (content != "false") {
                var values = content.split(":");
                var id = values[0];

                document.getElementById(id +"_add").disabled = false;
                document.getElementById(id +"_sub").disabled = false;
                var currElement = document.getElementById(id);


                if (currElement.value > values[1]) {
                    currElement .style.backgroundColor = "FF0000";
                    
                    TEMP[id] = setInterval(function(){ fadeRed(id); }, 5);
                } else {
                    currElement .style.backgroundColor = "00FF00";
                    TEMP[id] = setInterval(function(){ fadeGreen(id); }, 5);
                }                   

                currElement .value = values[1];
                
            } else {
                alert("Er is iets mis gelopen!");
            }
        }


met zelfde resultaat... In Ie wordt de functie één maal opgeroepen en daarna niet meer...

Make it idiot proof and someone will make a better idiot


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 15:40

crisp

Devver

Pixelated

ik denk dat in IE currElem.style.backgroundColor niet is wat jij denkt dat het is ;)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • nickman
  • Registratie: Augustus 2002
  • Laatst online: 12-05-2024

nickman

webmaster of http://www.bwf.be

Topicstarter
Je hebt gelijk! Dom van me om dat niet te controleren :).

Nu werkt het wel ;).

In IE geeft dit gewoon de hex waarde terug (wat ik logisch vindt) en in FF krijg ik rgb(...,...,...) terug.

Bedankt! :)

Make it idiot proof and someone will make a better idiot


Acties:
  • 0 Henk 'm!

  • watercoolertje
  • Registratie: Januari 2008
  • Laatst online: 15:07

watercoolertje

Untertitel

Dom van me om dat niet te controleren :)
Je bedoelt DOM ;)

(16 x 300Wp) 4800Wp + (sinds 14 feb 2023) (7 x 405Wp) 2835Wp = 7635Wp @Zuid op 4.5kW omvormer

Pagina: 1