2011-10-20 5 views
1

私はJavascriptで更新するカレンダーを作ろうとしていますが、 "未定義"が下に表示されています。Javascriptを取り除くにはどうすればいいですか?

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> 

2番目の質問:

なぜカレンダーだけ一ヶ月進めるん

ここではJavascriptをですか?

+0

プログラマの能力は、時間と費用を節約するために他のコードを再利用することです。なぜ、車輪を改革するのではなく、インターネット上の他のプレマイドコードを再利用してみませんか? –

+3

TRの内容を

に書き換えないでください.HTMLが正しくありません。ブラウザーは、あなたが意味するものを理解しようとする際に非常にファンキーなことをするかもしれません。これらの部分のスタイルを設定するにはCSSを使用します。パフォーマンスのためには、.innerHTMLを使用して別の要素に置き換えるhtml文字列を生成することをお勧めします。ソースで「未定義」が発生する場所を見ると、その周りに何が見えますか? – 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

を助けてくれてありがとう。 2番目の質問を修正するために、私はちょうどそれをグローバル変数 –

関連する問題