ごらくらいふ

プログラミングしたりゲームしたり

「リトル・レディ」かってに復活開発日誌 #7

f:id:yajamon:20150715095909p:plain

今日の課題

  • showL()を正常に動作するよう調査する f:id:yajamon:20150721094925p:plain

目的

  • 動作不良の改善

作業録

動作不良を確認していたところ、上述のshowL()そもそも意図した動作をしていなかった。

以下のソースが意図した動作をすれば、画面には▼が表示される。 しかし、実際には出力されなかった。

<SPAN ID="nextM"><a href="javascript:click()"></a></SPAN>
showL("nextM");

function showL(layName){
  if(document.layers)document.layers[layName].visibility='show'    //NN用
  if(document.all)document.all(layName).style.visibility='visible' //IE用
}

手入力で実行

表示処理

コンソールから、showLと同様のコードを実行してみる

f:id:yajamon:20150721103341p:plain

▼が表示された。

document.all存在チェック処理

まさかと思い実行する。

f:id:yajamon:20150721103524p:plain

falseの評価を受けていた。

なお、document.all単体で実行すると

f:id:yajamon:20150721103641p:plain

しっかり値が返ってくる。

つまり、document.allは存在する値を返しておきながら、ifにかけた時、falseを返す、ということになる。

document.allからの脱却

document.allについて軽く調べてみると、なにか闇の深さを感じたので、getElementByIdに切り替える。 mahoris-program.blog.so-net.ne.jp

showL()のついでにhideL()も手を加える

// /littlelady/js/eventP.js

/////////////////////////////////////
//○レイヤーを表示する
function showL(layName){
    document.getElementById(layName).style.visibility='visible';
}
/////////////////////////////////////
//○レイヤーを消す
function hideL(layName){
    document.getElementById(layName).style.visibility='hidden';
}

修正した結果、startから遷移した直後、▼が表示されるようになった。

yajamon.hatenablog.com

yajamon.hatenablog.com