IE中不支持DOM值属性?

时间:2011-12-29 23:04:52

标签: javascript internet-explorer popup

所以,我有一小部分javascript代码可以生成一个弹出式div。它完全符合我的预期。但后来我在IE上尝试了它,它不起作用(惊喜!)。我发现(令人震惊的是)IE有一个开发者控制台,可以使用javascript断点。所以,我浏览了我的代码,发现IE在下面的代码第4行遇到错误:

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给我错误“对象不支持此属性或方法”。我假设它指的是输入标签的value属性,ID为“email”。这个属性是DOM 1& 2 ...所以IE应该能够解释它。有没有人有这个问题的解决方法,或者我的代码实际上值得一个错误,我只是愚蠢?

1 个答案:

答案 0 :(得分:3)

您的问题不在于“值”属性。问题是您没有使用var声明您的本地变量。

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

Internet Explorer将元素的“id”值视为引用相应DOM节点的window的属性。如果没有var,变量“email”将是全局符号,而IE不喜欢为其分配字符串的想法。