여러 상태 막대를 날짜 사이의 시간대를 기준으로 업데이트하려고하지만 페이지의 마지막 진행률 막대 만 업데이트 중입니다. 나는 javascript/jquery에 익숙하지 않아서 많은 일을 잘못하고있다. 이 문제로 나를 도와 주시면 감사하겠습니다.다중 진행 막대 업데이트
<script>
$(document).ready(function() {
for(var i = 0, limit = ${tasksLength}; i < limit; i++) {
var bar = $('#task-progress-' + i);
var start = moment($('#task-submit-' + i).val(), "DD-MM-YYYY HH:mm").toDate();
var end = moment($('#task-deadline-' + i).val(), "DD-MM-YYYY HH:mm").toDate();
var time = end - start;
var interval = window.setInterval(function() {
var elapsed = new Date() - start;
bar.width(((elapsed/time) * 100) + "%");
if(elapsed >= limit) {
window.clearInterval(interval);
}
}, 250);
}
});
</script>
진행 바가 JSTL의 foreach 루프에서 만들어집니다 : 여기
내 코드의 당신은window.setInterval
내에서 콜백 함수 내부에서
bar.width
을 설정하는
<c:set var="tasksLength" value="${fn:length(tasks)}" />
<c:forEach items="${tasks}" var="task" varStatus="counter">
<fmt:formatDate type="both" pattern="dd-MM-yyyy HH:mm" value="${task.submit}" var="strSubmit" />
<fmt:formatDate type="both" pattern="dd-MM-yyyy HH:mm" value="${task.deadline}" var="strDeadline" />
<input type="hidden" id="task-submit-${counter.index}" value="${strSubmit}">
<input type="hidden" id="task-deadline-${counter.index}" value="${strDeadline}">
...
<div class="progress">
<div id="task-progress-${counter.index}" class="progress-bar progress-bar-info progress-bar-striped active" role="progressbar" aria-valuemin="0" aria-valuemax="100">
1d:20h:30m
</div>
</div>
...
</c:forEach>
문제를 재현 할 수있는 가장 짧은 경로를 만들면 감사하게 생각합니다. –
@RomanC 여기에 예제가 필요 없습니다. 변수의 간단한 문제입니다. 문제를 설명하는 아래의 내 대답을 확인하십시오. – Shaunak