前 目 次

class属性の変更でスタイルを変える

class属性を変更する例

エレメントノードにはstyle属性もありますから、簡単な変更ならこれでもできます。しかし、あらかじめ classごとに見栄えを指定しておいて classの値を変化させる方が簡単で応用を広げることが出来ます。

次の文は虫の名前がclass="mushi"というクラスのspanに、虫の音がclass="koe"というクラスのspanに指定されています。あらかじめ koe は青緑色に指定されてます。mushiは特に設定はありません。

span.koe   {color:#009999; font-weight:bold;}
span.medatsu1 {color:#ff0000;background:#ffcccc;}
span.medatsu2 {background:#ccffff;}

いろいろな虫がいます。特徴的ななき方をするものは聞き分けることは簡単です。ウマオイはスイッチョンとなきます。クツワムシは、歌に有名なようにガチャガチャと聞こえます。キリギリスもわかりやすくチョン・ギースと聞こえます。昼間になくので見つけやすいこともあるでしょう。

class="mushi"だけclass="medatsu1"に class="koe"だけclass="medatsu2"に

function changeclass1(){
    var i;
    var elms = document.getElementsByTagName("span");
    for (i=0;elms.length>i;i++){
        if (elms[i].getAttribute("class")=="mushi"){
            elms[i].setAttribute("class","medatsu1");
        }
    }
}
function changeclass2(){
    var i;
    var elms = document.getElementsByTagName("span");
    for (i=0;elms.length>i;i++){
        if (elms[i].getAttribute("class")=="koe"){
            elms[i].setAttribute("class","medatsu2");
            //elms[i].className = "medatsu2";
        }
    }
}

span.koe にもともと設定されていた color:#009999 と font-weight:bold; がなくなってしまうことに注意してください。

ただしブラウザが読み込んだページに対しての書き換えで, もともとのファイルのデータを書き換えるわけではありません。

class属性を作りながらスタイルを適用する

属性ノードの値を指定するとき、属性ノードがもともとあれば変更され, なければ新しく作られます。

下にある表はclass指定をまったくしていません。でも tr タグを数えて一つおきにclass属性を設定します。そのクラスに対してcssで背景色をつけるように設定してありますので、1行おきに色がついて見やすくなります。普通はページ表示と同時に実行するようにしますが、ここでは動作が分かるように手動で色をつけます。

1行おきにclass="medatsu2"を設定する

function trodd(){
    var i;
    var elms = document.getElementsByTagName("tr");
    for (i=0;elms.length>i;i=i+2){
            elms[i].setAttribute("class","medatsu2");
    }
}

丸付数字はUTF-8で作るhtmlでは機種依存文字ではありません。メールではISO-2022-jpなので機種依存文字になります。

数値参照UnicodeUTF-8JISX0213文字Name
①U+2460E291A03-2D21�@CIRCLED DIGIT ONE
②U+2461E291A13-2D22�ACIRCLED DIGIT TWO
③U+2462E291A23-2D23�BCIRCLED DIGIT THREE
④U+2463E291A33-2D24�CCIRCLED DIGIT FOUR
⑤U+2464E291A43-2D25�DCIRCLED DIGIT FIVE
⑥U+2465E291A53-2D26�ECIRCLED DIGIT SIX
⑦U+2466E291A63-2D27�FCIRCLED DIGIT SEVEN
⑧U+2467E291A73-2D28�GCIRCLED DIGIT EIGHT
⑨U+2468E291A83-2D29�HCIRCLED DIGIT NINE
⑩U+2469E291A93-2D2A�ICIRCLED NUMBER TEN
⑪U+246AE291AA3-2D2B�JCIRCLED NUMBER ELEVEN
⑫U+246BE291AB3-2D2C�KCIRCLED NUMBER TWELVE
⑬U+246CE291AC3-2D2D�LCIRCLED NUMBER THIRTEEN
⑭U+246DE291AD3-2D2E�MCIRCLED NUMBER FOURTEEN
⑮U+246EE291AE3-2D2F�NCIRCLED NUMBER FIFTEEN
⑯U+246FE291AF3-2D30�OCIRCLED NUMBER SIXTEEN
⑰U+2470E291B03-2D31�PCIRCLED NUMBER SEVENTEEN
⑱U+2471E291B13-2D32�QCIRCLED NUMBER EIGHTEEN
⑲U+2472E291B23-2D33�RCIRCLED NUMBER NINETEEN
⑳U+2473E291B33-2D34�SCIRCLED NUMBER TWENTY
㉑U+3251E389913-2841繪�CIRCLED NUMBER TWENTY ONE
㉒U+3252E389923-2842繪�CIRCLED NUMBER TWENTY TWO
㉓U+3253E389933-2843繪�CIRCLED NUMBER TWENTY THREE
㉔U+3254E389943-2844繪�CIRCLED NUMBER TWENTY FOUR
㉕U+3255E389953-2845繪�CIRCLED NUMBER TWENTY FIVE
㉖U+3256E389963-2846繪�CIRCLED NUMBER TWENTY SIX
㉗U+3257E389973-2847繪�CIRCLED NUMBER TWENTY SEVEN
㉘U+3258E389983-2848繪�CIRCLED NUMBER TWENTY EIGHT
㉙U+3259E389993-2849繪�CIRCLED NUMBER TWENTY NINE
㉚U+325AE3899A3-284A繪�CIRCLED NUMBER THIRTY
㉛U+325BE3899B3-284B繪�CIRCLED NUMBER THIRTY ONE
㉜U+325CE3899C3-284C繪�CIRCLED NUMBER THIRTY TWO
㉝U+325DE3899D3-284D繪�CIRCLED NUMBER THIRTY THREE
㉞U+325EE3899E3-284E繪�CIRCLED NUMBER THIRTY FOUR
㉟U+325FE3899F3-284F繪�CIRCLED NUMBER THIRTY FIVE
㊱U+32B1E38AB13-2850繩アCIRCLED NUMBER THIRTY SIX
㊲U+32B2E38AB23-2851繩イCIRCLED NUMBER THIRTY SEVEN
㊳U+32B3E38AB33-2852繩ウCIRCLED NUMBER THIRTY EIGHT
㊴U+32B4E38AB43-2853繩エCIRCLED NUMBER THIRTY NINE
㊵U+32B5E38AB53-2854繩オCIRCLED NUMBER FORTY
㊶U+32B6E38AB63-2855繩カCIRCLED NUMBER FORTY ONE
㊷U+32B7E38AB73-2856繩キCIRCLED NUMBER FORTY TWO
㊸U+32B8E38AB83-2857繩クCIRCLED NUMBER FORTY THREE
㊹U+32B9E38AB93-2858繩ケCIRCLED NUMBER FORTY FOUR
㊺U+32BAE38ABA3-2859繩コCIRCLED NUMBER FORTY FIVE
㊻U+32BBE38ABB3-285A繩サCIRCLED NUMBER FORTY SIX
㊼U+32BCE38ABC3-285B繩シCIRCLED NUMBER FORTY SEVEN
㊽U+32BDE38ABD3-285C繩スCIRCLED NUMBER FORTY EIGHT
㊾U+32BEE38ABE3-285D繩セCIRCLED NUMBER FORTY NINE
㊿U+32BFE38ABF3-285E繩ソCIRCLED NUMBER FIFTY

課題 ファイル名 xclass.html

ボタンをクリックまたはマウスが重なることで、classの値が変化して文字の色や背景色など見栄えが変化する仕組みのあるページをつくりなさい。

index.htmlからは「classの変化」という名前のリンクから行けるようにすること。

理解できない場合は、DOMの課題に共通の作成例を参考にしなさい。


ウェブページ(Jan.2011)
聖愛中学高等学校
http://www.seiai.ed.jp/
Dec.2009 初稿