2010-09-23 10 views
1

Comment exécuter les codes javascript à plusieurs reprises? Dire que j'ai un DIV avec id = 'box' et avec innerHTML de 1. Ensuite, disons que nous avons un lien "add-up", qui lorsque vous cliquez et maintenez votre souris, la fonction incrémentera de façon répétée le html interne de 1 jusqu'à tu lâches la souris?Mootools et exécution répétée de js

en faisant glisser mootools dans le scénario, comment puis-je exécuter le code à plusieurs reprises dans un délai de 2 secondes chacun?

+0

Salut les gars, désolé je n'ai pas informé, de toute façon, je ne pourrais pas sembler pour faire fonctionner le code de Tror. Sheeks06 fonctionne un peu, mais une fois que je clique, le code s'exécute de manière récursive par lui-même, puis s'arrête à 2998, après mootools/js va lancer une erreur récursive. – foxlance

Répondre

0

[Modifié]

var myTmr = null, 
    incFunc = function() { 
     if (!$('clickme').hasClass('down')) { 
      return false; 
     } 

     var box = $('box'); 
     /* increment logic. */ 
     box.set('text', box.get('text').toInt() + 1); 
     myTmr = incFunc.delay(2000); 
    }; 

$('clickme').addEvents({ 
    'click': function (e) { 
      e.stop(); 
     }, 
    'mousedown': function (e) { 
      e.stop(); 
      this.addClass('down'); 
      incFunc(); 
     }, 
    'mouseup': function (e) { 
      e.stop(); 
      this.removeClass('down'); 
      $clear(myTmr); 
     } 
}); 
+0

'inc.Func()' devrait être 'incFunc()', non? Et je pense que vous n'avez pas besoin du 'if (myTmr)', parce que $ clear (myTmr) 'fera le même. – Savageman

+0

Salut Sheeks, j'ai essayé de vous exécuter du code avec ce code html, mais wouldnt wor, jette une erreur "trop ​​de récursivité" si je tiens ou juct cliquez sur le lien. heres le html im jouant avec 'addMeUp

1
' – foxlance

+0

Essayez ma réponse éditée. – sheeks06

1

ici n'est pas la solution idéale, mais le point de début de

var timer; 
var up = function() { 
    var box = $('box'); 
    var counter = box.get('text').toInt(); 

    counter++; 
    box.set('text', counter); 
}; 
$$('a#addMeUp').addEvents({ 
    'mousedown': function(event) { 
     event.preventDefault(); 

     timer = up.periodical(2000); 
    }, 

    'mouseup': function() { 
     $clear(timer); 
    } 
}) 
+1

La minuterie n'est pas affectée. à tout. doit être, timer = up.periodical (2000); – sheeks06

+0

merci;). mis à jour – Tror

+0

Salut tror, ​​je ne pourrais pas sembler faire fonctionner votre code, je n'obtiens aucune erreur, juste rien, ne peux pas vraiment faire beaucoup ou offrir n'importe quelle explication comme un noob total à javascript. heres le html im jouant avec "addMeUp

1
" – foxlance