ページ

2011年5月7日土曜日

◆JavaScript for in 構文の不思議

今更ながらJavaScriptをちょっと齧ってみる。

10年ほど前に買ってあった参考書を引っ張り出し、サンプルを眺めているのだが、なんと動かないサンプルの多い事か。

参考書を買いなおすほど本格的に勉強するつもりはないのでネットを参照しながらちょぼちょぼ進める。

以下のようなサンプルがあったのだが、まともに動かない。

  1. <HTML>  
  2. <HEAD>  
  3. <TITLE>Sample</TITLE>  
  4. </HEAD>  
  5. <BODY bgColor="#FFffFF">  
  6. <CENTER>  
  7. エレメント  
  8.   
  9. </CENTER>  
  10. <FORM>  
  11. <INPUT TYPE="button">  
  12. <INPUT TYPE="checkbox">  
  13. <INPUT TYPE="fileUpload">  
  14. <INPUT TYPE="hidden">  
  15. <INPUT TYPE="password">  
  16. <INPUT TYPE="radio">  
  17. <INPUT TYPE="select">  
  18. <INPUT TYPE="submit">  
  19. <INPUT TYPE="text">  
  20. <TEXTAREA>OpenSpace</TEXTAREA>  
  21. </FORM>  
  22. <SCRIPT Language="JavaScript">  
  23. <!--  
  24. for(i in document.forms[0].elements) document.write(i+"="+document.forms[0].elements[i].type+"  
  25. ");  
  26. // -->  
  27. </SCRIPT>  
  28. </BODY>  
  29. </HTML>  

そもそもIEではtypeの参照でエラーになってるっぽいし、Firefoxとは挙動そのものもが違っている。


いったい「i」には何が入っているんだろうといった感じ。
どうもforeachと同じ感覚で使えるものでは無いっぽい。


調べてみると以下の記事で川俣先生が解説していた。
これは凶悪だっっっ! JavaScriptの"for~in"構文の罠 【▲→川俣晶の縁側→ソフトウェア→技術雑記】


どうも for in 構文は使えるものでは無いらしい。


しかし、ブラウザによって挙動が違うというのは判っていたがこんなにも違いがあるとは・・・。


世のWEBプログラマーの人は大変だ。

0 件のコメント:

コメントを投稿

私が最近チェックした記事