Partage
  • Partager sur Facebook
  • Partager sur Twitter

[JQuery] passer un paramètre

sans utiliser eval

Anonyme
    2 août 2011 à 17:58:37

    Salut à tous,

    J'ai besoin d'un peu d'aide à propos du passage de paramètre vers une fonction gérée par JQuery

    Tout fonctionne comme voulu mais j'aimerais éviter le eval lignes 17, 30, 35 et 36 :)

    Ma classe Counter (compteur) :
    function Counter(){
     this.id = Counter.counters.push(this) - 1
     this.active = false
     this.starters = $('input.counter_'+this.id+'.starter')
     this.reseters = $('input.counter_'+this.id+'.reseter')
     this.displayers = $('div.counter_'+this.id+'.displayer')
     this.reset()
    }
    
    Counter.counters = []
    
    Counter.prototype = {
     start: function(){
      if(this.active) return
      this.active = true
      this.count()
      eval("this.starters.val('Stop').click(function(){Counter.counters["+this.id+"].stop()})")
     },
     count: function(){
      this.display()
      this.timer = setTimeout(function(counter){
       counter.time++
       counter.count()
      }, 10, this)
     },
     stop: function(){
      if(!this.active) return
      this.active = false
      clearTimeout(this.timer)
      eval("this.starters.val('Start').click(function(){Counter.counters["+this.id+"].start()})")
     },
     reset: function(){
      this.stop()
      this.time = 0
      eval("this.starters.click(function(){Counter.counters["+this.id+"].start()})")
      eval("this.reseters.click(function(){Counter.counters["+this.id+"].reset()})")
      this.display()
     },
     display: function(){
      var t = this.time
      var s = t % 60; t -= t % 60; t /= 60; if(s < 10) s = '0'+s
      var min = t % 60; t -= t % 60; t /= 60; if(min < 10) min = '0'+min
      if(t < 10) t = '0'+t
      this.displayers.html(t+':'+min+':'+s)
     }
    }
    


    Ma page HTML5 :
    <!DOCTYPE html>
    <html>
     <head>
      <title>Chronomètre</title>
      <link rel=icon type="img/png" href="http://127.0.0.1/design/icon.png">
      <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
      <script type="text/javascript" src="counter.js"></script>
      <script type="text/javascript">
       $(document).ready(function(){
        new Counter()
        new Counter()
       })
      </script>
     </head>
     <body>
      <input class="counter_0 starter" type=button value=Start>
      <input class="counter_0 reseter" type=button value=Reset>
      <div class="counter_0 displayer"></div>
      
      <input class="counter_1 starter" type=button value=Start>
      <input class="counter_1 reseter" type=button value=Reset>
      <div class="counter_1 displayer"></div>
     </body>
    </html>
    
    • Partager sur Facebook
    • Partager sur Twitter
      2 août 2011 à 18:32:00

      C'est quoi this ? C'est quoi counter ? C'est quoi count ?

      jQuery n'étend pas les objets de base, donc Si count() est une méthode jQuery, ça ne fonctionnera que sur un objet jQuery.
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        2 août 2011 à 19:31:42

        J'ai réécris mon premier post pour le simplifier et le rendre plus complet.
        • Partager sur Facebook
        • Partager sur Twitter

        [JQuery] passer un paramètre

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown