자바스크립트 코드 관련 질문입니다.

alfhd00의 이미지

<html>
<head>
<script>
<!--
//calendar, timer, 살아온 날, 몇 년 몇 월 input, 윤년 판단
/*function lifeday(form){
var dayperM = 1000 * 60 * 60 * 24;
var hourperM = 1000 * 60 * 60;
var minuteperM = 1000 * 60;
var secondperM = 1000;
birth = new Date(form.birthY.value, form.birthM.value, form.birthD.value, form.birthH.value, form.birthMi.value); 
now = new Date(form.year.value, form.month.value);
 
var interval = now.getTime() - birth.getTime();
var interval_re = Math.floor(interval/dayperM);
 
var string = interval_re + "일 ";
interval -= interval_re*dayperM;
 
interval_re = Math.floor(interval/hourperM);
string += interval_re + "시간 ";
interval -= interval_re*hourperM;
 
interval_re = Math.floor(interval/minuteperM);
string += interval_re + "분 ";
interval -= interval_re*minuteperM;
 
interval_re = Math.floor(interval/secondperM);
string += interval_re + "초";
 
return string;
}
*/
 
function leapYear(year){
if(year/4 ==0 && year/100 != 0 || year/400 == 0) return 29;
else return 28;
}
 
function timer(my){
now = new Date();
var str = now.getHours() + ":" + now.getMinutes() + ":" + now.getSeconds();
 
my.t0.value = str;
setTimeout('timer(my)', 1000);
}
 
function calendar(form){
inputD = new Date();
inputD.setFullYear(form.year.value);
inputD.setMonth(form.month.value-1);
lastD = new Array("31", "30","31", "30", "31", "30", "31", "31", "30", "31", "30", "31");
firstD = new Date(inputD.getFullYear(), inputD.getMonth(), 1);
day = new Array("SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT");
var num=1, i, j;
 
lastD[1] = leapYear(inputD.getFullYear());
 
 
var dayperM = 1000 * 60 * 60 * 24;
var hourperM = 1000 * 60 * 60;
var minuteperM = 1000 * 60;
var secondperM = 1000;
birth = new Date(form.birthY.value, form.birthM.value, form.birthD.value, form.birthH.value, form.birthMi.value); 
now = new Date(form.year.value, form.month.value);
 
var interval = now.getTime() - birth.getTime();
var interval_re = Math.floor(interval/dayperM);
 
var string = interval_re + "일 ";
interval -= interval_re*dayperM;
 
interval_re = Math.floor(interval/hourperM);
string += interval_re + "시간 ";
interval -= interval_re*hourperM;
 
interval_re = Math.floor(interval/minuteperM);
string += interval_re + "분 ";
interval -= interval_re*minuteperM;
 
interval_re = Math.floor(interval/secondperM);
string += interval_re + "초";
 
 
 
document.write(inputD.getFullYear() + "년 " + (inputD.getMonth()+1) + "월"); 
document.write("<table border=1 align=center width=300 height=250><tr>");   
for(i=0; i<7; i++){
document.write("<td>" + day[i] + "</td>");
}
document.write("</tr>");
 
for(i=0; i<5; i++){
document.write("<tr>");
for(j=0; j<7; j++){
if(i==0 && j<firstD.getDay())document.write("<td></td>");
 
else if(num==inputD.getDate()){
document.write("<td>" + num + "<br>");
document.write("<form name=my><input type=text name=t0>"+ setTimeout('timer(my)', 1000) + "</form>");
document.write(string + "</td>");
num++;
}
 
else{
document.write("<td>" + num + "</td>");
num++;
}
 
if(num>lastD[inputD.getMonth()]) break;
}
 
document.write("</tr>");
if(num>lastD[inputD.getMonth()]) break;
}
 
document.write("</table>");
}
//-->
</script>
</head>
<body>
<form name = "form">
Year input : <input type="text" name="year"> <br>
Month input : <input type="text" name="month"><br>
input your birthday data. <br>
Year : <input type="text" name="birthY"><br>
Month : <input type="text" name="birthM"><br>
Date : <input type="text" name="birthD"><br>
Time : <input type="text" name="birthH"><br>
Minute : <input type="text" name="birthMi"><br>
<input type="button" value="enter" onclick="calendar(form)">
</form>
</body>
</html>

원래 태어난 날부터 현재 시기까지 내가 얼마나 살았는지 계산해주는 함수(lifeday)를 정의했습니다. 그런데

크롬에서 가능한데 explorer에서는 권한이 없다고 ...뜨길래 일단 calendar함수 안에 넣었습니다.

1. 이 코드를 크롬에서 하면 setTimeout이 잘 작동되는데 explorer로 하면 timer가 아예 작동이 안됩니다. 이유를 알고 싶습니다. 그리고 timer함수를 디버깅 체크했는데 그냥 넘어갑니다.
2. 크롬이나 explorer나 seTimeout 메소드 호출 후에 밖에 없는데 '1'이라는 숫자가 뜹니다. 해당 숫자가 어디에서 발생된 건지 알고 싶습니다.
3. lifeday 함수를 통해 살아온 날을 계산하려고 하면 (explorer로 실행할 때) birth라는 새로운 객체를 생성하는데에서 권한이 없다고 말합니다. 왜 그런것인지 알고 싶습니다.

shint의 이미지

이 예제소스를 참고해보시기 바랍니다.

시간과 Object용으로 테스트해서.
브라우저마다 CSS 레이어의 크기가 다를 수 있으니 주의하시기 바랍니다.

타이머를 사용하신후에는 해제가 필요합니다.
clearInterval( timer_id_pop );

이제. AJAX와 POST. MySQL 을 사용하면. 홈페이지 구조가 되겠네요.

댓글 첨부 파일: 

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.