2007年10月19日

IEにおけるJavaScriptの挙動差

Filed under: JavaScript — admin @ 4:46 PM

■サンプル

クリックするとIE7、IE6、Operaでは「5」、Firefox、Safari3、NS7.1では「7」と表示されます

■サンプルソース(自由にご利用下さい)

functionをfunctionの中に書くことは可能だが、正式にはif文やwhile文などの文ブロック内で定義することは出来ず、functionの先頭に記述しなければならない。従って、以下のコードは厳密には不正確でありテスト自体も意味をなすものではない。

<head>
<script type="text/javascript">
window.onload = function(){
    document.getElementById('2007101901button').onclick = function(){
        var bool = true;
        var num = 6;
        if(bool){
            function func(num){
                num++;
                return num;
            }
            num = func(num);
        }
        else{
            function func(num){
                num--;
                return num;
            }
            num = func(num);
        }
        document.getElementById('2007101901num').value = num;
    }
}
</script>
</head>
<body>
<form>
<input type="button" value="click" id="2007101901button" />
<input type="text" size="2" id="2007101901num" />
</form>
</body>

■実行結果

  • Firefoxでは7と表示される
  • IE7では5と表示される

■対処法

以下のように関数リテラルを使用する。

var func = function(num){
num--;
return num;
}

コメントはまだありません »

コメントはまだありません。

この投稿へのコメントの RSS フィード。 TrackBack URL

コメントする