今日の課題
- 炙りだされた不具合を解決する
前回、BGanime()
、slideLS()
から呼び出されたものを改修したら、不具合が発生した。
これを解決する
作業録
bga8 ?
詰まっているところを確認したところ、bga8
というエレメントが見つからず、moveL()
からエラーを吐き出していた。
function moveL(layName, x, y) { document.getElementById(layName).style.left = y; document.getElementById(layName).style.top = x; }
対象のエレメントはどこから生成される予定だったのか確認したところ、hane.htm
でdocument.writeから出力していた。
// /event/hane.htm //iはレイヤーの数 var Wsize=30;//画像の横幅 20 var Hsize=20;//画像の縦幅 16 for(i=0;i<8;i++){ //画像の縮小 (一定比率 5:4) if(i==2||i==5){ Wsize-=5; Hsize-=4; } typewrt+='<SPAN ID="bga'+i+'" '; typewrt+='STYLE="top:-100;left:0;'; typewrt+='position:absolute;'; typewrt+='font-family:Osaka,Arial;font-size:24pt;font-weight:900">'; typewrt+='<img SRC="../image/Ahane1.gif" width='+Wsize+' height='+Hsize+'>'; typewrt+='</SPAN>'; } document.write(typewrt);
この処理を見る限り、bga8
というエレメントは生まれる予定にない。
呼び出し処理の修正
生成処理について修正した覚えはない。むしろ呼び出し箇所について手を加えた記憶がある。
yajamon.hatenablog.com 前々回だ。
// /event/hane.htm function BGanime(layName,flag){ /* 初期計算処理 */ if (flag == 1) {//繰り返しの時 mvFlag[layName] = false; setTimeout(function () { slideLS(layName, a, b, a2, b2, c, 10); }); } else {//はじめの場合 for (i = 0; i < 8; i++) { /* 追加計算処理 */ mvFlag['bga' + i] = false; //flag setTimeout(function () { slideLS('bga' + i, a, b, a2, b2, c, 10); }, 10); } } }
この2個目のsetTimeout(function(){})
内部でi
を使っているのが良くなかった。
外側でlayNameを定義し、それを使うようにしたところ、このエラーは解決した。
// /event/hane.htm function BGanime(layName,flag){ /* 初期計算処理 */ if (flag == 1) {//繰り返しの時 mvFlag[layName] = false; setTimeout(function () { slideLS(layName, a, b, a2, b2, c, 10); }); } else {//はじめの場合 for (i = 0; i < 8; i++) { /* 追加計算処理 */ var targetLayerName = 'bga'+i; mvFlag[targetLayerName ] = false; //flag setTimeout(function () { slideLS(targetLayerName , a, b, a2, b2, c, 10); }, 10); } } }
エンバグこわい