このページの編集用画像

CSS:カレンダーの今日を強調(改訂版)2007年08月19日 16時03分42秒

カレンダーの今日を強調するようにしていたのに,いつの間にか反映されなくなっていました.
システム側で何らかの変更があったようなので,次男に対応を頼みました.

★新しいtoday1.jsの内容

document.getElementsByClassName = function(className){
    var allObj = new Array();
    var matchObj = new Array();
    allObj = document.getElementsByTagName("*");
    for(var i = 0; i < allObj.length; i++){
        if(className == allObj[i].className){
            matchObj.push(allObj[i]);
        }
    }
    return matchObj;
}

/*今日の日付のスタイルを変更する*/
function todaychange(){
    var dateTime = new Date();
    var yyyy = dateTime.getYear();
    var mm = dateTime.getMonth() + 1;
    var dd = dateTime.getDate();
    if(yyyy < 100){ yyyy += 1900; }
    if(String(mm).length == 1){ mm = '0'+ mm; }
    if(String(dd).length == 1){ dd = '0'+ dd; }
    var flag_kongetu = 0;
    var obj;
    obj = document.getElementsByClassName('calendar-title')[0].getElementsByTagName("a");
    for(var i = 0; i < obj.length; i++){
        if(obj[i].childNodes[0].nodeValue.match(yyyy +'/'+ mm)){
            /*今月のカレンダー*/
            flag_kongetu = 1;
            break;
        }
    }
    if(flag_kongetu != 1){
        /*今月のカレンダーではない*/
        return;
    }

    obj = document.getElementsByClassName('calendar-cell');
    for(var i = 0; i < obj.length; i++){
        if(! obj[i].hasChildNodes()){ continue;}
        if(obj[i].childNodes[0].hasChildNodes()){
            if(obj[i].childNodes[0].childNodes[0].nodeValue.match(dd)){
                obj[i].className = 'today';
            }             }
        else if(obj[i].childNodes[0].nodeValue.match(dd)){
            obj[i].className = 'today';
        }
    }
}
todaychange();


★主な変更点
今回のようなシステム側の小さな変更に影響されにくくする為に,ClassNameを利用して今日のセルを探すように書き直しました.

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