2012-08-23 5 views
0

클릭시 배열을 계속 반복하고 싶습니다. 너무 멀리에서 모든 :-)일시 중지 된 상태에서 계속 js 배열을 반복합니다.

모든 팁되지 않는

// Define word 
var text = "textthing"; 

// Define canvas 
var canvas = 'section'; 

// Split word into parts 
text.split(); 

// Loop over text 
$(canvas).click(function() { 

    $.each(text, function(key, val) { 
     $(canvas).removeAttr('class').addClass(val); 
    }); 

}); 

: 추가 소품은 내가 지금까지이있어

:-) 급 스위치 사이에 지연에서 작동 할 수 있는지?

+1

어 .. 또 뭐야? 당신의 질문은 아직도 당신이 이것을하고 싶은 이유를 말하지 않습니다 .. –

+0

이 논리는 결함이 있습니다 :'var text = 'lorem'; text.split(); console.log (텍스트) // lorem'. 대신 이것을하십시오 :'var text = 'lorem'.split (' '); console.log (텍스트) // [l, o, r, e, m]' – elclanrs

+0

@elclanrs. 네, 그게 좀 더 간결하지만 그 라인을 입력 요소를 통해 그 텍스트를 채우고 싶습니다. 그리고 이것은 더 명확하게 만듭니다. – Niels

답변

1

다음은 var el에서 선택한 요소를 클릭 할 때까지 대기합니다. 이 예에서 var el = $('section')은 문서에있는 모든 <section>...</section> 요소를 선택합니다.

그러면 각 요소를 선택한 요소의 CSS 클래스 이름으로 사용하여 cssClassNames의 값을 순환합니다. delayInMillis의 지연은 각 클래스 변경 사이에 사용됩니다.

var cssClassNames = ['c1', 'c2', 'c3']; 
var el = $('section'); 
var delayInMillis = 1000; 

// Loop over text 
el.click(function() { 
    var i = 0; 
    function f() { 
    if(i >= cssClassNames.length) { 
     i = 0; 
    } 
    var currentClass = cssClassNames[i]; 
    i += 1; 

    el.removeClass().addClass(currentClass); 
    setTimeout(f, delayInMillis); 
    } 
    f(); 
}); 
0

클래스 제거와 클래스 추가 사이에 X 밀리 초의 지연이 필요하다고 생각합니다. 나는 당신이 줄을 // 표시해야한다고 확신하지 못합니다. 또는 심지어 그들은 일을하지만, 당신이 가지고있는 일은 그 가치를 기능에 옮기는 방법입니다. 또한, setTimeout anon 함수는 실제로 매개 변수를 필요로하지 않을 수도 있지만, 그것은 당신에게 아이디어를 줄 것이다.

$(canvas).click(function() { 

    $.each(text, function(key, val) { 
     $(canvas).removeAttr('class') 
     var $canvas = $(canvas) //? 
     var class_val = val //? 
     setTimeout(function ($canvas, class_val) { 
      $canvas.addClass(class_val); 
     }, 2000); 

    }); 

}); 

편집 :이 대신 기능 modify_element ($ 요소, class_name을) { $ element.removeClass ('클래스')를 할 것; setTimeout (function ($ element) { $ element.addClass (class_name); }, 1000); //은 }을 제거한 후 클래스 1 초에 추가

$(canvas).click(function() { 

    $.each(text, function(key, val) { 
     setTimeout(modify_element($(canvas), val),2000); 
     //this will loop over the elements with 2 seconds between elements 
    }); 

}); 
0

"배열을 통해 루프가 계속해서"이것은 무한 루프처럼, 나는 당신이 원하는 생각하지 않는다 들린다. 루프 일시 중지에 대해 가능한 경우 사용할 수 있습니다 this

+0

음 ... 재미있다. – Niels

관련 문제