<body onload="setUp()">
詳細のバックグランドカラーを変える場合のスタイル
<head>
<style type="text/css">
.moreInfo{background-color: silver;}
input{margin:5px;}
</style>
</head>
<div class="info">
<div>下のボタンを押すと、詳細内容が出たり閉じたりします。
それとともに、ボタンの画像が「開く」「閉じる」とトグルして変化
します。</div>
<input type="image" name="button" class="syousai"
src="image/syousai_open.png" onclick="moreInfoOpen(this);"/>
<div class="moreInfo">
<p>「ここに詳細な内容を書きます。」</p>
</div>
</div>
</body>
function setUp(){
var moreInfoElmnts= getByClass(document,"moreInfo","div");
for (i=0; i > moreInfoElmnts.length; i++){
moreInfoElmnts[i].style.display = "none";
}
}
function moreInfoOpen(obj){
var moreInfoElmnts =getByClass(obj.parentNode,"moreInfo","div");
var input_kirikae = getByClass(obj.parentNode,"syousai","input");
if(moreInfoElmnts[0].style.display == "none"){
moreInfoElmnts[0].style.display = "block";
input_kirikae[0].src="image/syousai_close.png";
} else {
moreInfoElmnts[0].style.display = "none";
input_kirikae[0].src="image/syousai_open.png";
}
}
function getByClass(parentElmnt, className, tagName){
var cElmnts = new Array();
var elmnts = parentElmnt.getElementsByTagName(tagName);
for (i=0; i<elmnts.length; i++){
if(elmnts[i].className == className){
cElmnts.push(elmnts[i]);
}
}
return cElmnts;
}
このページを開くと、<body onload="setUp()">によりmoreinfo.jsの中のsetUp関数が実行されます。この関数は、htmlファイル内のinfoクラス内のdivタグでクラス名がmoreInfoになっている部分を非表示にする関数です。これにより、展開しているような部分がすべて閉じられます。次に、<input type="image" name="button" class="syousai" src="../image/syousai_open.png" onclick="moreInfoOpen(this);"/>により、ボタンが押されると、moreInfoOpen関数が実行されて、もしもこのブロックが非表示になっているならば表示に、表示になっているならば非表示にします。そして、同時に、ボタンのイメージを置き換えます。moreinfo.js内のinput_kirikae[0].src="image/syousai_open.png";やinput_kirikae[0].src="image/syousai_close.png";の部分は画像ファイルの入っているフォルダに変えます。
<head>〜</head>の間にmoreinfo.jsを呼び出すために<script language="javascript" type="text/javascript" src="moreinfo.js"></script>を書き込みます。src=の部分は、moreinfo.jsが存在するフォルダになるようにします。divタグにinfoクラスを指定し、そのボックス内に、開閉するボックスをdivタグ(moreInfoクラス)で入れ、それを開閉するためにinputタグ内のonclick="moreInfoOpen(this);"により、関数を呼び出します。また、展開した部分のバックグランドカラーなどを変える場合には、moreinfoクラスに対してスタイルシートで変更します。