2014-02-10 4 views
0

Я работаю над старым веб-приложением, пытающимся сделать несколько старых браузеров с IE-ориентированным кодом переносимыми, и столкнулся с проблемой, которую я не совсем понимаю.Javascript: считает, что поле ввода не определено

Вот отрывок из HTML Я смотрю на

<INPUT ID="H_Documents" NAME="H_Documents" TYPE=hidden VALUE="off"/> 
<TD ID="B_Documents" CLASS=menuoff NOWRAP WIDTH=11% VALIGN=CENTER onClick="if(document.readyState=='complete')expandMenu(T_Documents,B_Documents,H_Documents)" TITLE="Click to Show/Hide Documents" onmouseover="tabhiliteon(this)" onmouseout="tabhiliteoff(this)"> 
    Documents 
</TD> 

На всех современных браузерах это работает отлично, в том, что нажмите на текст «Документы» называет expandMenu и третий параметр в в Карелии функция, кроме IE, когда не в режиме совместимости, где он отказывается вызывать expandMenu и жалуется, что H_documents не определен.

Может кто-нибудь дать мне подсказку :)

Благодарность

+1

С какими версиями IE у вас возникли проблемы? – pstenstrm

+1

Похоже на 1998 год. – enapupe

+0

Это недопустимо HTML. – Jonathan

ответ

0

Даже если есть элемент присутствует с ID = «H_Documents», переменная H_Documents во второй строке не автомагический ссылка на этот элемент ,

Я думаю, что где-то в коде есть конструкция, как:

document.addEventListener(....){ 
    var H_Documents = document.getElementById('H_Documents') 
} 

более старые версии IE не поддерживают addEventListener, но вместо того, чтобы поддерживать document.attachEvent, которые более или менее то же самое. Я предлагаю вам проверить, доступен ли addEventListener или переключиться на attachEvent.

+0

Есть ли шанс, что он мог бы определить переменные за пределами фрагмента кода, который он опубликовал? – Jack

+0

Я уверен, что это так, поскольку он работает в современных браузерах. –

+0

H_documents больше нигде не определяется ни в HTML, ни в JS. – scholsie

Смежные вопросы