2010-09-23 3 views
1

Как вы производите javascript-коды повторно? Скажем, у меня есть DIV с id = 'box' и с innerHTML of 1. Тогда, скажем, у нас есть ссылка «add me up», которая, когда вы нажимаете и удерживаете мышью, функция будет многократно увеличивать внутренний html на 1 до вы отпустили мышь?Mootools и повторное выполнение js

перетаскивание mootools в сценарий, как я могу запустить код повторно за 2 секунды задержки каждый?

+0

Привет, ребята, извините я не получил уведомление, в любом случае, я не мог показаться чтобы код работал от Tror. Sheeks06 kinda работает, но как только я нажимаю, код выполняет рекурсивно сам по себе, а затем останавливается на этапе 2998, после чего mootools/js выдаст рекурсивную ошибку. – foxlance

ответ

0

[Изменено]

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()' должен быть 'incFunc()', no? И я думаю, что вам не нужно 'if (myTmr)', потому что '$ clear (myTmr)' будет делать то же самое. – Savageman

+0

hi sheeks, я попробовал запустить код с этим html-кодом, но wouldnt wor, выбрасывает ошибку «слишком много рекурсии», если я держу или сокнул ссылку. heres the html im playing with 'addMeUp

1
' – foxlance

+0

Попробуйте отредактированный ответ. – sheeks06

1

здесь не является идеальным решением, но точка начать с

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

таймер не назначен. любому. должен быть, timer = up.periodical (2000); – sheeks06

+0

спасибо;). обновлено – Tror

+0

Привет, tror, ​​я не мог заставить ваш код работать, я не получаю ошибки, просто ничего, не могу сделать много или предложить какое-либо объяснение, как im total noob на javascript. heres html im, играющий с "addMeUp

1
" – foxlance

Смежные вопросы