사용자가 클릭 재생을 허용하는 차트를 작성하려고하면 차트를 몇 초 동안 차트에 표시하고 다음으로 이동하기 전에 여러 해를 반복합니다.
사용자가 일시 정지를 클릭하여 애니메이션을 일시 중지 할 수 있도록해야합니다. 이것은 내가 실패하고있는 곳이다.jQuery setTimeout 중지되지 않음 함수 실행
내 문제는 범위가 있지만 100 %는 아닙니다. 애니메이션을 반복 할 곳을 찾았지만 사용자가 일시 중지를 클릭하면 일시 중지가 아닌 애니메이션이 계속 순환됩니다. clearInterval
이 console.log
에서 실행되는 것을 볼 수 있지만 다시는 아무것도 수행하지 않고 애니메이션이 계속됩니다.
나는 각 차트의 모양을 지연시키고 (가장 확실하게 잘못된 방식으로) setInterval
을 사용하여 루프를 예약합니다. 나는 여기에서 많은 답변을 setTimeout
과 setInterval
을 읽었으며 사용했지만 아무 소용이 없다. 나는 그들이 왜 효과가 없는지 이해하지 못하고 다른 질문과 "내 질문이 다르다"는 것이 확실합니다.
그런데, 나는 3 일 동안 내 책상에 머리를 두드리고 있었고 여기에 몇 가지 조언을 실제로 쓸 수 있었다. 아래는 내가 현재 함께 일하고 있어요 자바 스크립트/jQuery를은 다음과 같습니다
jQuery('#animation-play').on('click', function() {
// loopThroughYears();
var animation;
if (jQuery('#animation-play').hasClass('play')) {
jQuery('#animation-play').addClass('stop').removeClass('play').text('Pause Animation');
var years = [2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015];
var time = 1000;
if (animation) {
clearInterval(animation);
}
animation = setInterval(function() {
$.each(years, function(index, values) {
setTimeout(function() {
if (years.this < 2016) {
selectChartYear(values);
jQuery("#chart-years").val(values);
}
}, time);
});
}, time);
} else {
jQuery('#animation-play').addClass('play').removeClass('stop').text('Play Animation');
console.log("Timeout Cleared!");
clearInterval(animation);
}
});
감사와 요소, 예를 들어, 다른 곳에서 그 변수를 저장해야 할 것이다. 실제로 멈추지도 않으며 일단 애니메이션이 끝나면 다시 시작됩니다. 끝없이 반복됩니다. – albert
아, 알겠습니다. 한 번 실행하고 클릭 등을 멈추고 다시 시작 하시겠습니까? 당신은 정말로 가깝지 않습니다, 당신은 아마 이것과 같은 것을 원할 것입니다 -> ** https : //jsfiddle.net/a894np6L/** – adeneo
너무 가깝습니다. 세월이 다할 때까지 일합니다. 그래서 그것은 재생됩니다. 그런 다음 사용자가 일시 중지하도록하십시오. 그러나 재생을 다시 클릭하면 2015 년 이후에 "Uncaught TypeError : selectChartYears() 함수에서 변수 인 null의 속성 '23'을 읽을 수 없습니다. – albert