返事が遅くなってすみません。
一応なぜエラーになるかはわかりました。
多分、ページの読み込みが完了していない時期にイベントが起こると、未定義の変数にアクセスすることになってエラーになるということだと思います。
これを回避する方法は色々あると思いますが、
例えば
var LOADED = false;
window.onload=function(){
LOADED=true;//読み込みが完了したらフラグ設定
}
//menu methods
function ehandler(event,theobj){
if(LOADED){//読み込みが完了している時だけ動作する
for (var i=1; i<= theobj.numberofmenuitems; i++){
var shutdiv =eval( "menuitem"+i+".thediv");
shutdiv.style.visibility="hidden";
}
theobj.thediv.style.visibility="visible";
}
}
function closesubnav(event){
if(LOADED){//読み込みが完了している時だけ動作する
if ((event.clientY <48)||(event.clientY > 107)){
for (var i=1; i<= numofitems; i++){
var shutdiv =eval('menuitem'+i+'.thediv');
shutdiv.style.visibility='hidden';
}
}
}
}
とかすればいいと思います。
質問者
お礼
ご丁寧にありがとうございます。早速教えていただいた方法でやってみます。本当ににありがとうございます。
一応、一番最後に書いてある以下の部分をちょっと上のHTMLに書いてあげたらエラー回数は減りましたが、不規則に時々エラーが出ました。
<script type="text/javascript">
<!--
var menuitem1 = new menu(8,1,"hidden");
var menuitem2 = new menu(8,2,"hidden");
var menuitem3 = new menu(8,3,"hidden");
var menuitem4 = new menu(8,4,"hidden");
var menuitem5 = new menu(8,5,"hidden");
var menuitem6 = new menu(8,6,"hidden");
var menuitem7 = new menu(8,7,"hidden");
var menuitem8 = new menu(8,8,"hidden");
// -->
</script>
>一番最後に書いてある以下の部分を
この部分も本来は、window.onloadの部分で実行すべき部分ですね。
最後に書いてあるので、読み込みが終了する時ぐらいに実行されるというような動作になります。
もし、window.onloadに含めるなら
var menuitem1;
var menuitem2;
var menuitem3;
var menuitem4;
var menuitem5;
var menuitem6;
var menuitem7;
var menuitem8;
window.onload=function(){
menuitem1 = new menu(8,1,"hidden");
menuitem2 = new menu(8,2,"hidden");
menuitem3 = new menu(8,3,"hidden");
menuitem4 = new menu(8,4,"hidden");
menuitem5 = new menu(8,5,"hidden");
menuitem6 = new menu(8,6,"hidden");
menuitem7 = new menu(8,7,"hidden");
menuitem8 = new menu(8,8,"hidden");
LOADED=true;//読み込みが完了したらフラグ設定
}
のようにすればいいと思います。この場合、もとの部分は削除します。
お礼
ご丁寧にありがとうございます。早速教えていただいた方法でやってみます。本当ににありがとうございます。 一応、一番最後に書いてある以下の部分をちょっと上のHTMLに書いてあげたらエラー回数は減りましたが、不規則に時々エラーが出ました。 <script type="text/javascript"> <!-- var menuitem1 = new menu(8,1,"hidden"); var menuitem2 = new menu(8,2,"hidden"); var menuitem3 = new menu(8,3,"hidden"); var menuitem4 = new menu(8,4,"hidden"); var menuitem5 = new menu(8,5,"hidden"); var menuitem6 = new menu(8,6,"hidden"); var menuitem7 = new menu(8,7,"hidden"); var menuitem8 = new menu(8,8,"hidden"); // --> </script>