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>
でも許されるのか?こんなコード。同僚の人にみられたら殺される予感。。。