login  Naam:   Wachtwoord: 
Registreer je!
 Forum

recursieve functie

Offline roy - 13/06/2008 20:53
Avatar van royPHP gevorderde Beste allemaal,

Ik heb een recursieve functie gemaakt, dat is niet helemaal netjes (want je stack kan vollopen).

even het codevoorbeeldje:

  1. function runIt(i){ //i=0
  2. //array bevat willekeurig 6 getallen, 2,4,6,8,5,1
  3. if(arr.in_array(i) ) //er wordt gekeken of i in de array voorkomt
  4. {
  5. $("a#tekst" + i).fadeIn(1000).fadeTo(800, 1).fadeOut(600); //er wordt een effect uitgevoert!
  6. setTimeout(function(){
  7. if (i < 9) {
  8. runIt(i + 1); //functie roept zichzelf aan
  9. }
  10. else {
  11. i = 0;
  12. runIt(i + 1);//functie roept zichzelf aan
  13.  
  14. }
  15.  
  16. }, 2000);
  17. }
  18. else
  19. { //als niet in array voorkomt
  20. if (i < 9) {
  21. runIt(i + 1);//functie roept zichzelf aan
  22. }
  23. else {
  24. i = 0;
  25. runIt(i + 1);//functie roept zichzelf aan
  26.  
  27. }
  28. }
  29. }


Hoe kan ik de functie veranderen zodat ie niet meer zichzelf aanroept? want volgens mij is dit geen nette manier?

ik hoop wat zinvolle tips/verbeteringen te krijgen,
groeten

5 antwoorden

Gesponsorde links
Offline Ibrahim - 13/06/2008 21:04
Avatar van Ibrahim PHP expert wat moet de functie eigenlijk doen 
Offline roy - 13/06/2008 21:21
Avatar van roy PHP gevorderde Hij kijkt of er bepaalde div's bestaan, zoja dan voert hij een jQuery animatie uit..

De functie werkt! alleen denk ik dat het niet een mooie manier is...
Offline Ibrahim - 13/06/2008 21:54
Avatar van Ibrahim PHP expert Hoe initialiseer je het script ? Volgens mij is het niet eens de volledige code (ik zie de aanmaak van arr niet).

Als de Id's in de arr array zit, dan is het toch simpel:

  1. function runIt(i) {
  2.  
  3. setTimeout(function() {
  4. $("a#tekst" + i).fadeIn(1000).fadeTo(800, 1).fadeOut(600);
  5. }, (i * 700));
  6.  
  7. }
  8.  
  9. var arr = [1, 4, 5, 7, 9, 12];
  10. for(i in arr) {
  11. runIt(arr[i]);
  12. }
Offline roy - 13/06/2008 23:14
Avatar van roy PHP gevorderde Hier wordt de array gemaakt en gevuld.. dat maakt in principe niks uit voor de werking van de functie...

  1. var arr = new Array();
  2. function animeer(){
  3.  
  4.  
  5. $("div.galleryart").each(function(i){
  6. if ($("div.galleryart").find("a#tekst" + i).length > 0) {
  7. //alert(i);
  8. arr[i] = i;
  9. }
  10. });
  11. //alert(arr);
  12.  
  13. runIt(0);
  14.  
  15.  
  16.  
  17.  
  18. }
  19.  
  20. function runIt(i){
  21. //alert(arr);
  22. if(arr.in_array(i) )
  23. {
  24. $("a#tekst" + i).fadeIn(1000).fadeTo(800, 1).fadeOut(600);
  25. setTimeout(function(){
  26. if (i < 9) {
  27. runIt(i + 1);
  28. }
  29. else {
  30. i = 0;
  31. runIt(i + 1);
  32.  
  33. }
  34.  
  35. }, 2000);
  36. }
  37. else
  38. {
  39. if (i < 9) {
  40. runIt(i + 1);
  41. }
  42. else {
  43. i = 0;
  44. runIt(i + 1);
  45.  
  46. }
  47. }
  48. }
Offline Ibrahim - 14/06/2008 21:14
Avatar van Ibrahim PHP expert Snap je ook wat mijn functie doet ?
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.17s