2013-08-09 2 views
1

드루팔 (Drupal 7)에 Jcarousel을 설치했지만 클라이언트가 화살표 위로 움직일 때 양쪽으로 수평 스크롤해야합니다.setTimeout()에 변수 전달하기

나는 Timeout 함수에 변수를 전달하려고 시도했으나 제대로 작동하지 않는 것 같습니다. 다음 코드에서 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()"; 

} 
부탁드립니다!

답변

0

이 100 % 권리를 느끼지 않는다,이 시도하지만, 일부 기술은 당신이 필요로하는 것 같다 소개 :

c.nextprev을 C를 포착, 즉시 실행하고 정말 필요했던 일을하는 함수를 반환하고,

여기에 "이"다시 C로 세트를 결합 ... ... 폐쇄로

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); 

케이 ... 또는 어쩌면 그냥 모든 앞의 코드없이이 작업을 수행.

setTimeout((k === 5)? c.next.bind(c): ((k === 1)? c.prev.bind(c): function(){})); 
+0

정확히 첫 번째 답변을 시도한 후 그랬습니다. 그리고 그것도 작동하지 않습니다. 나는 이틀 동안 이걸 가지고 돌아 다녔다. 어쩌면 내가 잘못된 길을 가고있어 문제가 Jcarousel의 코드에있을 수도 있습니다. – user2669424