このページの編集用画像

CSS:カレンダーの今日を強調2007年02月12日 11時36分16秒

JUSTBLOGに書いている番外地!で,カレンダーの今日の部分を強調するようにスタイルシートを変更しました.そこで,この朝風呂具にも適用しようとしましたがうまくいきませんでした.
@niftyのココログやJUSTBLOGのカレンダーは今月以外は表示できないので,今日だけをチェックするだけですが,アサブロの場合は,今月以外は強調しないように判定するルーチンを追加する必要がありました.
次男に変更してもらい目的を果たしました

・ツールバー設定
<!-- TODAY ここから-->
<script type="text/javascript" src="URL/today1.js ">
</script>
<!-- TODAY ここまで-->


・today1.jsの内容
2007/08/19追記:
システム側の変更があり,改訂版を公開しました
/*今日の日付のスタイルを変更する*/
function todaychange(){
    var ed,today,yyyy,mm,mydate,num,cells;
    var flag_kongetu = 0;
    cells = document.getElementsByTagName("td");
    ed = cells.length;
    mydate=new Date();
    today= "" + mydate.getDate();
    yyyy = "" + mydate.getYear();
    mm = "" + mydate.getMonth();mm++;
    if(String(mm).length == 1){mm = '0' + mm;}
    if(String(today).length == 1){today = '0' + today;}
    for(i=0;i<ed;i++){
                /*一個もChildNodeが無い場合にchildNodes[0].hasChildNodes()を
        実行すると死ぬのでchildNodeを作ってスペースだけのセルを作る*/
    if(! cells[i].hasChildNodes()){
          cells[i].appendChild(document.createTextNode(' '));
    }
          /*今月以外のカレンダーで適用されるのを防ぐ.*/
        /*年/月があるセルはchildNodesが2以上*/
    if(cells[i].childNodes.length >= 2){
            /*今月のカレンダーかどうか判定.年月はchildNodes[1]に入っている.*/
        if(cells[i].childNodes[1].nodeValue == ' ' + yyyy + '/' + mm + ' '){
            flag_kongetu = 1;
        }
    }

        /*セルの中に<a>があったりしてchildNodesにchildNodesがある場合の対処*/
    if(cells[i].childNodes[0].hasChildNodes()){
        num = "" + cells[i].childNodes[0].childNodes[0].nodeValue;
    }else{
        num = "" + cells[i].childNodes[0].nodeValue;
            }

            /*今日の日付のセルのclassをtodayに.*/
            if(num == today && flag_kongetu){
            cells[i].className ="today";
        }
    }
}
todaychange();
・注意事項 JAVASCRIPTを呼び出す部分(ここの場合はツールバー)はソース上で,カレンダーより後にある必要があります
・オリジナル記事は茅乃さんのみるくここあにあります

TAMO’s HOME 別荘(メインblog)