2015-09-15 2 views
2

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

Мой код

<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> 

ответ

1

Похоже, вы запускаете приложение в режиме совместимости. Если это так, значение элемента 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. Чтобы исправить это, вам нужно создать все необходимые параметры в скрипте, см. select element.

+0

Я открываю HTA с помощью приложения Microsoft HTML Host – user2095748

+2

Да, я знаю, но IE предлагает JS и механизмы рендеринга для mshta.exe. Дополнительную информацию см. В [Javascript version in HTA] (http://stackoverflow.com/a/19570684/1169519). – Teemu

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