Мой IE не поддерживает "document.getElementById ()"! - PullRequest
7 голосов
/ 08 июля 2010

Мой IE - это IE 6. Он довольно старый, но я должен его использовать.

Я только что обнаружил странную проблему, он не поддерживает "document.getElementById ()"!

См. Мой тестовый файл: test.html

<a id="aaa">xxx</a>
<script>
aaa = document.getElementById("aaa");
alert(aaa);
</script>

Когда я открываю этот файл в IE, появляется диалоговое окно ОШИБКА:

line: 3
char: 1
error: object doesn't support the attribute or method
code: 0
URL: file://D:/test.html

Я допустил некоторые ошибки?Это так странно ~

Ответы [ 5 ]

15 голосов
/ 08 июля 2010

Это потому, что якорный элемент (в IE6) настроен как глобальная переменная с именем aaa.И затем вы пытаетесь использовать другую переменную с тем же именем.

Если вы измените ее на ...

<a id="aaa">xxx</a>
<script>
bbb = document.getElementById("aaa");
alert(bbb);
</script>

, она должна работать.

См. http://verens.com/2005/03/18/getelementbyid-bug-in-ie6/

4 голосов
/ 08 июля 2010

Как отметил barrylloyd, это потому, что элемент привязки установлен (в IE6) как глобальная переменная с именем aaa. Вы можете использовать var для создания локальной переменной с именем aaa:

<a id="aaa">xxx</a>
<script type="text/javascript">
var aaa = document.getElementById("aaa");
alert(aaa);
</script>
4 голосов
/ 08 июля 2010

Измените имя переменной, чтобы оно не совпадало с идентификатором элемента.

0 голосов
/ 08 июля 2010

Это работает, если вы поместите блок javascript в раздел тега <head>. Там, где JS обычно должны быть размещены в любом случае.

0 голосов
/ 08 июля 2010

Это фрагмент вашего HTML-файла или всего файла? В первом случае я бы предложил добавить соответствующие теги (<html>, <body>) и тип документа. Во-вторых, элемент должен быть загружен при выполнении этого javascript, но в IE6 я бы на него не полагался Поэтому вы можете попробовать это внутри функции загрузки:

window.onLoad = function() {
  alert(document.getElementById("aaa"));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...