2013-03-27 11:49:31 - 본인 요청으로 인한 삭제 (냉무) ☆ > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

2013-03-27 11:49:31 - 본인 요청으로 인한 삭제 (냉무) ☆ 정보

2013-03-27 11:49:31 - 본인 요청으로 인한 삭제 (냉무) ☆

본문

댓글 전체

제가 문제를 이해한게 맞나 모르겠네요.
어째뜬 여러게 카운트를 하려면...이렇게 해보면 어떨지요

<form name='day' action=''>
<input type='text' name='count1' readonly='readonly' size='25'>
<input type='text' name='count2' readonly='readonly' size='25'>
<input type='text' name='count3' readonly='readonly' size='25'>
<input type='text' name='count4' readonly='readonly' size='25'>
</form>

<script type="text/javascript">

function count(ele, future){
var now=new Date().getTime();
var far=future-now;
var year=Math.floor(far/31536000000); // 365일은 31536000초
// Math.floor(a/b)는 a/b의 몫을 구함. a%b는 나머지를 구함.
var mod=far%31536000000;
var days=Math.floor(mod/86400000);// 하루는 86400초
mod=mod%86400000;
var hours=Math.floor(mod/3600000); // 1시간은 3600초
mod=mod%3600000;
var mins=Math.floor(mod/60000); // 1분은 60초
mod=mod%60000;
var sec=mod/1000;
ele.value=year+'년 '+days+'일 '+hours+'시간 '+mins+'분 '+sec+'초';
setTimeout(function() { count(ele, future); }, 1);
}

var future1=new Date(2012,02,21,0,0,0,0).getTime();
var future2=new Date(2012,01,01,0,0,0,0).getTime();
var future3=new Date(2012,03,15,0,0,0,0).getTime();
var future4=new Date(2012,03,02,0,0,0,0).getTime();

count(document.forms['day']['count1'], future1);
count(document.forms['day']['count2'], future2);
count(document.forms['day']['count3'], future3);
count(document.forms['day']['count4'], future4);

</script>
jQury 플러그인으로 살짝 바꿔보면..


<script type="text/javascript">

$.fn.countdown = function(future_time) {

var doit = function($ele, future) {
var now=new Date().getTime();
var far=future-now;
var year=Math.floor(far/31536000000); // 365일은 31536000초
// Math.floor(a/b)는 a/b의 몫을 구함. a%b는 나머지를 구함.
var mod=far%31536000000;
var days=Math.floor(mod/86400000);// 하루는 86400초
mod=mod%86400000;
var hours=Math.floor(mod/3600000); // 1시간은 3600초
mod=mod%3600000;
var mins=Math.floor(mod/60000); // 1분은 60초
mod=mod%60000;
var sec=mod/1000;
$ele.val(year+'년 '+days+'일 '+hours+'시간 '+mins+'분 '+sec+'초');
setTimeout(function() { doit($ele, future); }, 1);
};

return this.each(function() {
doit($(this), future_time);
});

};


var future1=new Date(2012,02,21,0,0,0,0).getTime();
var future2=new Date(2012,01,01,0,0,0,0).getTime();
var future3=new Date(2012,03,15,0,0,0,0).getTime();
var future4=new Date(2012,03,02,0,0,0,0).getTime();

$(document).ready(function() {
$('input[name=count1]').countdown(future1);
$('input[name=count2]').countdown(future2);
$('input[name=count3]').countdown(future3);
$('input[name=count4]').countdown(future4);
});

이렇게 하면 됩니다. 근데..
함수에서 재귀적으로 setTimeout 을 호출하지 않고
setInterval 로 하면... html 이 업데이트 되지 않습니다. 아마도.. 1ms 가 너무 짧은듯해서 업데이트를 못하는 것이 아닌가하고 생각해봅니다.
답변 무지하게 감사드리고요 ...

제 머리의 한계인지 ...

<?php
    for ($t=0; $t<count($list); $t++) {
$str = "{$list[$t]['wr_6']}";
?>
<form name='day' action=''>
<input type='text' name='count<?php echo $t?>' readonly='readonly' size='25' />
</form>

<script type="text/javascript">

function count(ele, future){
var now=new Date().getTime();
var far=future-now;
var year=Math.floor(far/31536000000); // 365일은 31536000초
// Math.floor(a/b)는 a/b의 몫을 구함. a%b는 나머지를 구함.
var mod=far%31536000000;
var days=Math.floor(mod/86400000);// 하루는 86400초
mod=mod%86400000;
var hours=Math.floor(mod/3600000); // 1시간은 3600초
mod=mod%3600000;
var mins=Math.floor(mod/60000); // 1분은 60초
mod=mod%60000;
var sec=mod/1000;
ele.value=year+'년 '+days+'일 '+hours+'시간 '+mins+'분 '+sec+'초';
setTimeout(function() { count(ele, future); }, 1);
}

var future<?php echo $t?>=new Date(<?php echo substr($str,0,4)?>,<?php echo substr($str,8,2)?>,<?php echo substr($str,14,2)?>,0,0,0,0).getTime();

count(document.forms['day']['count<?php echo $t?>'], future<?php echo $t?>);

</script>
<?php } ?>

하면 ... 문제가 발생하네요 ...

http://dtd.mixskin.com/bbs/board.php?bo_table=f_made

딱 한군데만 나오네요 ...

아무래도 for 문 밖에 위치해야 할 듯 합니다.
wr_6에는 "2012,05,25" 이런 값이 넘어오는게 맞는건가요?
그렇다면
var future<?php echo $t?>=new Date(<?php echo substr($str,0,4)?>,<?php echo substr($str,5,2)?>,<?php echo substr($str,8,2)?>,0,0,0,0).getTime();
이게 되야겠네요.. substr의 인자값이 틀려있네요..
그리고 루프문 안에서 count()과 form name=day의 선언이 계속 이뤄지네요..
일단 어느정도 고쳐봤습니다.
setTimeout 1은 검나 빠른거 같아서 그냥 1초로 1000 잡았습니다.
그리고 마지막 초에서도 소수점이하가 보이길래 floor()해줬습니다.

<script type="text/javascript">
function count(ele, future){
var now=new Date().getTime();
var far=future-now;
var year=Math.floor(far/31536000000); // 365일은 31536000초
// Math.floor(a/b)는 a/b의 몫을 구함. a%b는 나머지를 구함.
var mod=far%31536000000;
var days=Math.floor(mod/86400000);// 하루는 86400초
mod=mod%86400000;
var hours=Math.floor(mod/3600000); // 1시간은 3600초
mod=mod%3600000;
var mins=Math.floor(mod/60000); // 1분은 60초
mod=mod%60000;
var sec=Math.floor(mod/1000);
ele.value=year+'년 '+days+'일 '+hours+'시간 '+mins+'분 '+sec+'초';
setTimeout(function() { count(ele, future); }, 1000);
}
</script>
<form name='day' action=''>
<?php
    for ($t=0; $t<count($list); $t++) {
        $str = "{$list[$t]['wr_6']}";
?>
<input type='text' name='count<?php echo $t?>' size='30' /> <br />
<script type="text/javascript">
var future<?php echo $t?>=new Date(<?php echo substr($str,0,4)?>,<?php echo substr($str,5,2)?>,<?php echo substr($str,8,2)?>,0,0,0,0).getTime();
count(document.forms['day']['count<?php echo $t?>'], future<?php echo $t?>);
</script>

<?php } ?>
</form>
전체 104 |RSS
그누4 질문답변 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT