Совместимость HTA и Javascript. Javascript не работает в HTA

У меня есть два выпадающих меню. Когда я выбираю из первого раскрывающегося списка, записи во втором раскрывающемся списке должны измениться. Эта функция отлично работает в браузере, но не в HTA (приложении HTML).

Мой код

<html>
<head>
<script language="javascript">
function change()
{
     var sel=document.getElementById("second")
     var val=document.getElementById("first").value
     if(val=="1")
     {
         sel.innerHTML="<option>a</option><option>b</option>  <option>c</option>"
     }
     else if(val=="2")
     {
          sel.innerHTML="<option>x</option><option>y</option><option>z</option>"
     }
 }  

</script>
</head>
<body>
 <div>
  <select id="first" onchange="change()">
  <option>1</option>
  <option>2</option>
  </select >

<select id="second">
   <option>a</option>
   <option>b</option>
   <option>c</option>
  </select>
 </div>

person user2095748    schedule 15.09.2015    source источник


Ответы (1)


Похоже, вы запускаете приложение в режиме Quirks. В этом случае значение элемента select никогда не устанавливается.

Вы должны либо использовать режим документа IE9 или более поздней версии (например, установить HTML5 DTD и <meta http-equiv="x-ua-compatible" content="ie=edge" />), либо использовать свойство selectedIndex, чтобы получить значение элемента select:

var val = sel[sel.selectedIndex].value;

Последний вариант - единственный вариант, если вы запускаете приложение с IE ‹9.

Другая проблема - установка innerHTML из select элемента. Это не будет работать в IE ‹10. Чтобы исправить это, вам нужно создать все необходимые параметры в скрипте, см. выберите элемент.

person Teemu    schedule 15.09.2015
comment
Я открываю HTA с помощью Microsoft HTML Application Host - person user2095748; 15.09.2015
comment
Да, я знаю, но IE предлагает JS и механизмы рендеринга для mshta.exe. Дополнительную информацию см. В версии Javascript в HTA. - person Teemu; 15.09.2015