2013-08-10 1 views
-1

Я пытаюсь сделать jcarousel работу обе стороныпонимание SetTimeout()

Если я использую следующие его возвращает правильное

сигнал "будь готов"
this.timer = window.setTimeout((a === 0.5)? alert("c.next() a = " + a): 
           (a === 0.6)? alert("c.prev() a = " + a): 
           function(){},500) ; 

, но, если я заменю предупреждение фактический называют его не прокручивается. просто переходит к следующему изображению

this.timer = window.setTimeout((a === 0.5)? c.next.bind(c): 
           (a === 0.6)? c.prev.bind(c): function(){},500) ; 

без связывания() не работает, либо

this.timer = window.setTimeout((a === 0.5)? c.next(): 
           (a === 0.6)? c.prev(): function(){},500) ; 

ли кто-нибудь имеет представление о том, почему это происходит? если я не использую каких-либо условий внутри таймаута и использовать один из двух вызовов, например c.next(), то он будет прокручивать, но только справа налево

Любое руководство будет очень цениться Sandra

+1

Что значит «не прокручивается, просто переходит к следующему изображению»? Разве это не то, что делает ваша функция 'c.next()'? Второй образец кода выглядит как правильный; первый на самом деле ничего не делает, а третий ошибается. – Pointy

+0

ОК. Ты прав. c.next() переходит к следующему. Но если я использую: window.setTimeout (function() {c.next()}, 500), он прокручивается вправо, пока пользователь не вытащит мышь. Исходя из этого, я пытаюсь использовать ту же функцию (потому что не могу найти другой способ), чтобы прокручивать ее влево, если пользователь наводит курсор на левую кнопку – user2669424

ответ

2

Сделать это проще для себя и определить свои функции раньше времени и таким образом, что избавляет вас от объема и закрытия

var next = function() {return c.next();}, 
    prev = function() {return c.prev();}, 
    noop = function() {}; 

this.timer = window.setTimeout(
    (a === 0.5 ? next : a === 0.6 ? prev : noop), 
    500 
); 

Теперь

  1. I f вы хотите отладить функцию , вы можете отладить ее отдельно до setTimeout.
  2. Это ясно, что Функция передается в setTimeout.

Редактировать Также обратите внимание, как я не вызывая функции, как они передаются в качестве аргумента; когда используется setTimeout, это потому, что они хотят что-то вызывать позже, а не сразу.

+0

. Это работает правильно, но без прокрутки. Здесь мы начали: http://stackoverflow.com/questions/18139359/jcarousel-autoscroll-in-two-different-directions – user2669424