2011-12-29 26 views
2

私はポップアップdivを作るJavaScriptコードを少し持っています。それは私がそれを期待した方法とまったく同じです。しかし、IEで試してみましたが、うまくいきません(驚きました!)。私は、IEに開発者コンソールがあり、JavaScriptのブレークポイントが可能であることを(衝撃的に)発見しました。だから、私は私のコードを経て、そしてIEは以下のコードでは4行目にエラーが発生したことが判明:DOM値プロパティはIEではサポートされていませんか?

function makePopUp() { 
    div = document.getElementById("shell"); 
    if(!div) { 
     email = document.getElementById("email").value; //HERE IS THE ERROR! 
     popupshell = document.createElement("div"); 
     popupinner = document.createElement("div"); 
     popupshell.id = "shell"; 
     popupinner.id = "inner"; 
     popupinner.innerHTML = "A crazy long string (HTML of the popup)" 
     popupshell.appendChild(popupinner); 
     document.body.appendChild(popupshell); 
    } 
    else { //This just blinks the popup window if it already exists. 
     blink(div); 
     t = setTimeout("blink(div);",100); 
     t = setTimeout("blink(div);",200); 
     t = setTimeout("blink(div);",300); 
     t = setTimeout("blink(div);",400); 
     t = setTimeout("blink(div);",500); 
    } 
} 

IEは、「オブジェクトはこのプロパティまたはメソッドをサポートしていません」私にエラーを与えます。私はそれがid "email"で持っている入力タグのvalueプロパティを参照していると仮定します。このプロパティはDOM 1 & 2です。IEはそれを解釈できるはずです。誰かがこの問題に対する回避策を持っているのですか、実際にはエラーに値するコードで、私はばかだと思いますか?

+0

サイドノート: 'setTimeout'に文字列を渡さず、関数を渡します。 'setTimeout(function(){blink(div);}、100);' –

+0

'電子メールとは何ですか? div、入力フィールド、テキストエリア? –

答えて

3

問題は "値"属性ではありません。問題は、ローカル変数をvarで宣言していないことです。

var email = document.getElementById("email").value; //HERE IS THE ERROR! 

Internet Explorerは、対応するDOMノードを参照windowの性質などの要素の「ID」の値を扱います。 varがなければ、変数 "email"はそのグローバルシンボルになり、IEはあなたに文字列を割り当てるアイディアを好まない。

+0

「オブジェクトはこのプロパティまたはメソッドをサポートしていません」と思うのですか?しかし、 'email'が本当にグローバル変数でない限り、' var'を使うのは良い考えです。 –

+1

私はIEが何を投げるのか分かりません。それは奇妙なことをする。 – Pointy

+0

http://jsfiddle.net/aKy89/ <= IE9で動作します –

関連する問題