私の JavaScript には、私の Web サイトのページの 1 つのコードがあります。
$('#nmdt1').datetimepicker({
dateFormat: $.datepicker.ATOM,
minDate: nmsdt,
...
...
これは、id="nmdt1" がロードされたページが読み込まれると正常に実行されます。そして、関連する datetimepicker js ライブラリ (モジュール) を、そのページを読み込んだときにのみ読み込みます。ここまでは順調ですね。
しかし、Web サイトに他のページをロードすると、このエラーが発生します。dateformat が定義されている行番号からです。
編集: firebug ログの正しいエラーは次のとおりです。
TypeError: $.datepicker is undefined
http://myswbsite/jscript/myjsscript.js
Line 569
569行目は次のとおりです。
dateFormat: $.datepicker.ATOM,
はい、このエラーは、関連する js コード (jquery-ui-timepicker-addon.js) をロードしていないページでのみ発生します。この js をすべてのページにロードしない理由は、1 つのページだけで必要だからです。
詳細:
lib ロード後の HTML ヘッダー (seq)
<head>
<script src="/jscript/jquery-1.8.0.min.js" type="text/javascript"></script>
<script src="/jscript/myjsscript.js" type="text/javascript"></script>
...
...
<script type="text/javascript">
jQuery(document).ready(function(){
var mid = "[% mid %]";
alert('mid='+mid);
$(".bvmainmenu #"+mid).css({"background":"url(/images/current-bg.gif) top left repeat-x", "color":"#ffffff"});
});
</script>
</head>
上記の最後の JavaScript コード (ヘッダーの下部) は、jquery-ui-timepicker-addon.js lib がロードされていないたびに実行されません (そして、firebug でエラーが表示されます - エラーが発生しても問題ありませんが、なぜこれが最後のコードは実行されていません。よくわかりません)。「アドオン」ライブラリをロードしなかったという理由だけで、このルーチンが実行されない理由を理解できません
すべてを正しく実行するページは、BODY に次の js スクリプトをロードします
<script src="/jscript/jquery-ui-1.8.21.custom.min.js" type="text/javascript"></script>
<script src="/jscript/jquery-ui-timepicker-addon.js" type="text/javascript"></script>
このページでは、ヘッダーに表示される最後の JavaScript コードも読み込まれ、アラートが表示されます。
私はこれを理解するのに苦労しています。