.js1ファイルで上記エラーをなくすことができる記述方法か、又はページ毎に.jsファイルを作成しなければいけないのかご教授願います。
直接オブジェクトを指定するのではなくて,IDやNAMEを関数の引数にもてばよいと思います。
function a(id){
document.getElementById(id).value = 'XXX'
}
とか
function a(id){
document.getElementsByName(name).item(0).value = 'XXX'
}
とかです。
window.onload=function(){
func1();
func2();
func3();
}
と、なっているとして、各関数を処理をするかどうかを判断してみては?
// 例1-URLで判断 // abc.htmlの時だけfunc1を実行 if(loaction.href.match(/abc\.html$/)) func1(); // 例2-bodyのidで判断 // <body id="abc">のhtmlの時だけfunc2を実行 if(document.body.id == 'abc') func2(); // 例3-要素があるかどうかで判断 // <??? id="abc">の要素が存在するときだけfunc3を実行 if(document.getElementById('abc')) func3();
あるいはエラーをとにかく無視させてしまう。(ある関数の中でエラーが発生しても他の関数を実行するようにする)
window.onload=function(){ try {func1();}catch(e){} try {func2();}catch(e){} try {func3();}catch(e){} }
ありがとうございます。難しく考えていました。
上記のbodyIDで動作を確認、他ページでエラーも出ませんでした。
そういえばそうか、と自分の頭の固さを感じてしまいました。
とりあえず解決はしましたが、他のアプローチで案があれば以下にお願いします。
上記でもだめでした。
関数Aはページ1で使用、関数Bはページ2で使用として。
例えばページ2が読み込まれた段階で、関数Aで使用しているオブジェクトが見つからない、
ページ1が読み込まれた段階で関数Bで使用しているオブジェクトが見つからない、
となってしまいます。
読み込むページ内で使用のnameとか、IDを配列かなにかで取得して、
for文などで、取り出しつつ関数で使うnameと一致したら実行、みたいなそんなことでもいいのですが。