Изменение стиля отображения опций выбора на нет в MSIE - PullRequest
2 голосов
/ 09 февраля 2010

Может, кто-нибудь подскажет, почему следующий код не работает под MSIE?

<html>
<body>
<select id="si">
<option value="">1</option>
<option value="">2</option>
<option value="">3</option>
</select>

<script type="text/javascript">
var e=document.getElementById("si");
e.size=3;
e[0].style.display="none"; // <-------- no effect
</script>

</body>
</html>

Ответы [ 3 ]

4 голосов
/ 09 февраля 2010

IE не позволяет напрямую манипулировать option элементами. По моему опыту, вам нужно удалить все элементы option из select и заново заполнить их теми изменениями, которые вы хотите внести, уже примененными (в данном случае один элемент удален).

1 голос
/ 24 марта 2011

Для тех, кто имеет дело с сокрытием элементов опций в затронутых версиях, я разместил здесь обходной путь, который не клонирует и не удаляет опции, а оборачивает их вокруг, что, вероятно, намного проще:

http://work.arounds.org/issue/96/option-elements-do-not-hide-in-IE/

0 голосов
/ 09 февраля 2010

Похоже, что в MSIE все работает нормально, без "побочных эффектов", если вы обнаружите что-то не так, пожалуйста, дайте мне знать, спасибо.

<html>
<body>
<select id="si">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>

<script type="text/javascript">
var e=document.getElementById("si");
e.size=3;
var a = new Array();
var n = new Array();
var x = 2;
if(!a.length)for(var i=0,m=e.length;i<m;i++) {
    a.push(e[i].value);
}
while(e.firstChild)
    e.removeChild(e.firstChild);
for(var i=0,m=a.length;i<m;i++) {
    if(x==a[i]) {
        e.add(new Option(a[i],a[i]));
    }
}
</script>

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