問題の、期待通りに実行されないconsole.logのある、main.js内で定義されているfunction getWeatherXMLFile()がどこでどうやって呼ばれているか不明なので、何とも言えませんが。
(1) <head>内の<script>でアノニモスな「(function(){...」を実行しているように見受けられます。
「main.html で JavaScript main.js を呼び出し」ているわけですが、それは、<head>内の<script>であることを理解されていますか?
viewtopic.php?f=26&t=16419 と同じ間違いをしていませんか?
あっちではロードイベントのeventListnerで実行することで、要素ができてからアクセスしたようですけど、
HTMLだと、<body onload="ほげほで();">で行う、あるいは、必要な要素の後ろの<script>で行う、というのが、普通の手法です。
[追記]
<head>内の<script>で何かを行う、というのは、自分の混乱の元になります。
<head>内の<script>では、functionやobjectの定義だけにとどめ、実行するのは、必要なオブジェクトの初期化だけ、にしておかないと、自分の混乱を招くだけ、になりがちです。
全ては、onloadで必要なことを実行した後で、というのが、自分の混乱を招かない方法になります。
[追記おわり]
(2) 「(function(){ var global=this;」とやっているんですが、ここでのthisって何になるか、ちゃんと理解して書いていますか?
HTMLの中だから、thisが何であれ、未定義の変数は、大抵は、順番に親の関数の変数を探しに行って結局はグローバルスコープのwindowまで探しに行くんだけど、いい加減に書いていると、碌なことがありません。
thisは、オブジェクトメソッドの中で、オブジェクトメソッドが実行されるオブジェクトを参照する時だけにとどめておかないと、自分の混乱を招くだけですから、ご注意を。
[追記]
自分でjsmモジュールを作ってimportして遊んでいたら、それが作るXXXという変数が、window.XXXになってしまっていて、下手をするとシステムや他の拡張のwindow.XXXを壊すのであせったのですが、それも「スコープ」などをきちんと理解していないためでした。
ちゃんと、let MyObj;import(...jsm,MyObj);として、自分のローカルの変数・objectに入れなきゃ、windowまで漏れ出して当然、ということでした。
[追記おわり]
問題の、期待通りに実行されないconsole.logのある、main.js内で定義されているfunction getWeatherXMLFile()がどこでどうやって呼ばれているか不明なので、何とも言えませんが。
(1) <head>内の<script>でアノニモスな「(function(){...」を実行しているように見受けられます。
「main.html で JavaScript main.js を呼び出し」ているわけですが、それは、<head>内の<script>であることを理解されていますか?
http://forums.mozillazine.jp/viewtopic.php?f=26&t=16419 と同じ間違いをしていませんか?
あっちではロードイベントのeventListnerで実行することで、要素ができてからアクセスしたようですけど、
HTMLだと、<body onload="ほげほで();">で行う、あるいは、必要な要素の後ろの<script>で行う、というのが、普通の手法です。
[追記]
<head>内の<script>で何かを行う、というのは、自分の混乱の元になります。
<head>内の<script>では、functionやobjectの定義だけにとどめ、実行するのは、必要なオブジェクトの初期化だけ、にしておかないと、自分の混乱を招くだけ、になりがちです。
全ては、onloadで必要なことを実行した後で、というのが、自分の混乱を招かない方法になります。
[追記おわり]
(2) 「(function(){ var global=this;」とやっているんですが、ここでのthisって何になるか、ちゃんと理解して書いていますか?
HTMLの中だから、thisが何であれ、未定義の変数は、大抵は、順番に親の関数の変数を探しに行って結局はグローバルスコープのwindowまで探しに行くんだけど、いい加減に書いていると、碌なことがありません。
thisは、オブジェクトメソッドの中で、オブジェクトメソッドが実行されるオブジェクトを参照する時だけにとどめておかないと、自分の混乱を招くだけですから、ご注意を。
[追記]
自分でjsmモジュールを作ってimportして遊んでいたら、それが作るXXXという変数が、window.XXXになってしまっていて、下手をするとシステムや他の拡張のwindow.XXXを壊すのであせったのですが、それも「スコープ」などをきちんと理解していないためでした。
ちゃんと、let MyObj;import(...jsm,MyObj);として、自分のローカルの変数・objectに入れなきゃ、windowまで漏れ出して当然、ということでした。
[追記おわり]