2011-10-20 4 views
1

Javascript로 업데이트하는 캘린더를 만들려고하지만 'undefined'가 아래쪽에 표시되고 잘못 표시되지 않습니다.Javascript를 없애는 방법 "Undefined"

function calendar(month){ 
var s= new Date(); 

var year=s.getFullYear(); 
var wday= s.getDay(); 
var mday =s.getDate(); 


var days = new Array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"); 
document.write(' <table border=\"1\" bordercolor=\"black\" cellpadding=\"1\" cellspacing=\"0\" width=\"220px\"><h6 style="size:.5em;"><tr>\n'); 


for (i=0; i<(days.length); i++) { 
    document.write(' <td style=\"background-color: #CCCCCC; text-align: center; width: 33px;padding:2px; \"> <strong> ' + days[i] + ' </strong></td> '); 
} 
var day=1; 
b=6; 

for (count = 0; count < (b*7); count++) { 

     var start= new Date(year,month,day,0,0,0,0); 

     var dayarray = new Array();  


      dayarray['mon'] = start.getMonth();// month 
      dayarray['yr'] = start.getYear();// year 
      dayarray['wday'] = start.getDay();//day of the week 
      dayarray['mday'] = start.getDate();// day of the month 

     if ((count % 7) == 0) { 

           document.write(' </tr><tr>\n'); 
         } 

       if ((count < (dayarray['wday'])) || (dayarray['mon']!=month)) { 

         document.write ('<td style=\"background-color: white; text-align: center; width: 33px;padding:2px; \" >&nbsp;</td>\n'); 

       } else { 
         document.write(' <td style=\"background-color: white; text-align: center; width: 33px;padding:2px; \">' + dayarray['mday'] + ' </td>\n '); 
         day +=1; 

       } 

} 
document.write(' </tr></h6></table>'); 
} 
function next(c){ 
    document.getElementById(c).style.visibility="visible"; 
    document.getElementById((c-1)).style.visibility="hidden"; 

} 

그리고 HTML : : 여기

은 자바 스크립트의

<div style="display: block;"> 
       <img src="style/rightArrow.jpg" onclick="var it=12;next(it);it++;"/> 


     <br/> 
     <div id="calendar" style="margin:auto;width:220px;height:182px;" > 
      <div id="11" style="position:absolute;left:10px;top:400px;visibility: visible;"> 
    <script type="text/javascript">var ha=0;d=new Date();document.write(calendar(d.getMonth()+ha));</script> 
    </div> 

    <div id="12" style="position:absolute;left:10px;top:400px;visibility:hidden;"> 
    <script type="text/javascript">var ha=1;d=new Date();document.write(calendar(d.getMonth()+ha));</script> 
    </div> 

    <div id="13" style="position:absolute;left:10px;top:400px;visibility:hidden;"> 
    <script type="text/javascript">var ha=2;d=new Date();document.write(calendar(d.getMonth()+ha));</script> 

    </div> 
    </div> 
    </div> 

두 번째 질문 :

이유 달력은 일개월 발전 하는가?

+0

프로그래머는 시간과 비용을 절약하기 위해 다른 코드를 재사용 할 수 있습니다. 왜 바퀴를 다시 발명하기보다는 인터넷에서 다른 사전 코드를 재사용하지 않으시겠습니까? –

+3

TR의 내용을

으로 바꾸지 마십시오. 부적절한 html이며, 브라우저가 의미하는 바를 알아 내려고 할 때 매우 펑키 한 일을 할 수도 있습니다. CSS를 사용하여 조각들을 스타일링하십시오. 성능을 위해 HTML 문자열을 생성 한 다음 .innerHTML을 사용하여 다른 요소로 바꾸는 것이 좋습니다. 그것은 "undefined"가 소스에서 발생하는 곳을 볼 때 주변에서 무엇이 보입니까? – scrappedcola

+0

1. 나는 단지 놀고있어. 2. 고마워. 고침을 고쳤다.

의 –

답변

2

문제는 각 함수 호출을 둘러싼 document.write()에 있습니다.

<div id="calendar" style="margin:auto;width:220px;height:182px;" > 
      <div id="11" style="position:absolute;left:10px;top:400px;visibility: visible;"> 
    <script type="text/javascript">var ha=0;d=new Date();calendar(d.getMonth()+ha);</script> 
    </div> 

캘린더 호출시 주변에서 제거하면 정의되지 않습니다. http://jsfiddle.net/qXARb/2/

+0

모두에게 감사한다. 두 번째 질문을 고치려면 방금 전역 변수를 "it"로 만들어야했습니다. –

관련 문제