1

Drupal 7 に Jcarousel をインストールしましたが、クライアントが矢印の上にカーソルを置いたときに両側に水平にスクロールする必要があります。

変数を Timeout 関数に渡そうとしましたが、うまくいかないようです。次のコードでは、タイムアウトのみが認識されます: var n = function () {c.next();}; ユーザーがクリックした矢印に応じて、 c.prev() または c.next() を使用して、タイムアウトに左または右にスクロールするように指示できる必要があります。

var c = this;
var k = 1;
var n = function () {c.next();};

if (k == 1) n = function () {c.prev();};
if (k == 5) n = function () {c.next();};

this.timer = window.setTimeout(n, 500)

私もこの方法でやろうとしましたが、うまくいきません。

var c = this;
var k = 5;
this.timer = window.setTimeout(function() {c.nextprev(k);}, 500)

...

  nextprev: function(k) {

if (k === 1) return "prev()";
if (k === 5) return "next()";

}

ヘルプやガイドラインをいただければ幸いです。

4

1 に答える 1

0

これを試してみてください。100% 正しいとは思えませんが、必要と思われるいくつかのテクニックを紹介します。

c.nextprev をすぐに実行し、c と k をクロージャとしてキャプチャして、本当に必要なことを行う関数を返します...

c.nextprev = function(k){ 
  return function(){
// I feel like prev and next might be backwards... think about that
    if (k === 1) c.prev();  
    if (k === 5) c.next();
// do nothing if k not 1 nor 5
 }
};

c.timer = window.setTimeout(c.nextprev(k), 500);

...または、上記のコードをすべて使用せずにこれを実行するだけかもしれません....

ここで bind は "this" を c に戻します。

setTimeout( (k === 5)? c.next.bind(c): ((k === 1)? c.prev.bind(c): function(){} ) );
于 2013-08-09T23:40:54.203 に答える