南極の図書館

ペンギンが寝ていた…。

初めてのJavaScript第二版 13章の例題をじっくりやってみる。 (後半)

昨日の続き。

メソッドの追加

objSetOpacity(value)
objGetOpacity()
を追加してみる。

function changeOpacity() {
   // div1
   var currentOpacity = parseFloat(theobjs["div1"].objGetOpacity());
   currentOpacity-=0.1;
   theobjs["div1"].objSetOpacity(currentOpacity);

   // div2
   currentOpacity = parseFloat(theobjs["div2"].objGetOpacity());
   currentOpacity+=0.1;
   theobjs["div2"].objSetOpacity(currentOpacity);
}

動かす

全然動かない。
仕方ないので本書の通りにやることにする。
変更は以下の通り。

//before
function DivObj(obj){
	this.obj = obj;
	this.objGetOpacity = getOpacity;
	this.objSetOpacity = setOpacity;
};

//after
function DivObj(obj){
	this.obj = obj;
	this.objGetOpacity = getOpacity;
	if(obj.style.filter)
		this.objSetOpacity = alphaOpacity;
	else
		this.objSetOpacity = cssOpacity;
}

これも、変更。

//before
function setOpacity(value){
	if(this.obj.style.filter){
		var opacity = value *100;
		value.style.filter = "alpha(opacity:" + opacity + ")";
	}else{
		value.style.opacity = value;	
	}
};

//after
function alphaOpacity(value){
	var opacity = value * 100;
	this.obj.stlye.filter = "alfpha(opacity:" + opacity + ")";
}

function cssOpacity(value){
	this.obj.style.opacity = value;
}


これで動いた。
ソースは殆どオフィシャルと同一になったので、そちらを参照のこと。
http://www.marlin-arms.com/support/ljs2/index13.php
の例13-4


今日はここまで。
最初の切り口でもいけそうな気がしたのだが…。後で考えてみる。
体調が悪いため今日は早寝。