IE中不支持DOM值属性

DOM value property not supported in IE?

本文关键字:属性 DOM 不支持 IE      更新时间:2023-09-26

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

你的问题不在于"value"属性。问题是您没有使用var声明您的局部变量。

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

Internet Explorer将元素的"id"值视为指向相应DOM节点的window的属性。如果没有var,变量"email"将是全局符号,IE不喜欢你给它分配字符串的想法。