div要素(レイヤー)の前景色を指定します。
【レイヤーの前景色指定「kl_layer_setfgcolor(id,color)」<keynavi_tools.js】
-----------------------------------------------------------------------------
■ kl_layer_setfgcolor(id,color,ns4string)
・ 返り値:成功時は1失敗時は0
・ id:対象となるレイヤー(オブジェクト)かそのID
・ color:変更したい前景色
・ ns4string:NS4にも対応したい場合はレイヤーの中身を指定
-----------------------------------------------------------------------------
function kl_layer_setfgcolor(id,color,ns4string){
if(KL_NS4 && kl_isstr(ns4string))
return kl_layer_write(id,ns4string,1,color);
return kl_layer_setattr(id,"fc",color);
}
KL_LAYER_ATTRS["fc"]=new Array("str","fgColor","color","color");
.............................
//以下、属性変更用汎用スクリプト
function kl_layer_setattr(id,name,val){
var e=kl_getelem(id); if(!e) return 0;
var attrs=KL_LAYER_ATTRS[name];
var t;
if(KL_NS4){
if(name=="w" || name=="h") e.clip[attrs[1]]=val;
else if(name=="fc") e.document.fgColor=val;
else if(name=="bi") e.background.src=val;
else e[attrs[1]]=val;
}else{
if(!e.style) return 0;
e.style[attrs[document.all ? 2 : 3]]=val;
}
return 1;
}
【kl_layer_setfgcolor()を使ったサンプル】
.....
<a href="javascript:void(0)" onclick="alert(kl_layer_setfgcolor('lay1','red'));">赤に変更</a>
.....
<div style="position:absolute; left:100px; color:brown;" id="lay1">
レイヤー「lay1」です。
</div>
この文字列の色が変わります。
Netscape4.xでは 一度表示された文字列の色を変更できません。
通常の属性変更では動作せず中身を再出力して変更を実現します。
具体的には
「document.layers[...].open()」後に前景色を指定
「document.layers[...].document.fgColor=...」してから
レイヤーの中身を再出力「document.layers[...].document.write(s)」します。
そのため 前景色変更の関数には Netscape4用に引き数「ns4string」があり
これが指定された場合にのみ前景色変更が実行されます。
なお NS4のレイヤー内容出力関数「document.write()」は不安定なので
NS4に対応する場合は実際にブラウザで動作を確認してください。
レイヤーに対する各種スタイル指定は「document.write()」時に外れることが
多いので 前後2つのレイヤーを組合わせる半透明レイヤー:kl_tlayer_new()
の利用をお勧めします。
背景レイヤー側でスタイル指定をすれば 前景の中身を書き替えても
影響が出ません。