javascript解決編

http://d.hatena.ne.jp/root-ame/20080907#p2の続き

調べ物してたら、みつかった。

http://d.hatena.ne.jp/amachang/20090119/1232331329

これは、 var 文によって生成される変数は「ブロックスコープ」ではなく「関数スコープ」だからだ。

なんと!javascript…!恐ろしい子…!

ちうことで、直してみたら上手く動いた。

  <html>
  <script language="javascript">
    var Flag = 0;
    
    function Init()
    {
      var ObjArray = fooform.getElementsByTagName("select");
      for(var idx=0,len=ObjArray.length; idx<len; idx++)(function(Node)
      {
        var func = Node.onchange;
        Node.onchange = function(){if(func)func(); FlagOn(); };
      })(ObjArray[idx]);
    }

    function FlagOn()
    {
      Flag = 1;
    }
  </script>
  <body onLoad="Init();">
    <form name="fooform">
      <select name="hoge"></select>
      <select name="huga" onChange="alert('Hello! Huga!');"></select>
      <select name="piyo"></select>
    </form>
  </body>
  </html>

でも許されるのか?こんなコード。同僚の人にみられたら殺される予感。。。