所以,我有一小部分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应该能够解释它。有没有人有这个问题的解决方法,或者我的代码实际上值得一个错误,我只是愚蠢?
答案 0 :(得分:3)
您的问题不在于“值”属性。问题是您没有使用var
声明您的本地变量。
var email = document.getElementById("email").value; //HERE IS THE ERROR!
Internet Explorer将元素的“id”值视为引用相应DOM节点的window
的属性。如果没有var
,变量“email”将是全局符号,而IE不喜欢为其分配字符串的想法。