Свойство значения DOM не поддерживается в IE? - PullRequest
2 голосов
/ 30 декабря 2011

Итак, у меня есть небольшой кусочек 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 входного тега с идентификатором «email». Это свойство DOM 1 & 2 ... поэтому IE должен иметь возможность интерпретировать его. У кого-нибудь есть обходной путь к этой проблеме, или мой код на самом деле заслуживает ошибки, и я просто глуп?

1 Ответ

3 голосов
/ 30 декабря 2011

Вы проблема не с атрибутом "значение". Проблема в том, что вы не объявляете свои локальные переменные с var.

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

Internet Explorer рассматривает значения "id" элементов как свойства window, которые ссылаются на соответствующий узел DOM. Без var переменная «email» была бы тем глобальным символом, и IE не нравится идея присвоения ему строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...