0

重複の可能性:
<option> に適用された style=“display:none” は IE では機能しないが、Mozilla では機能する

リストを検索して結果のみを表示し、他のものを非表示にすることになっている JS がありますが、何らかの理由で私のコードは Mozilla でのみ機能します。Chrome と IE で機能させる方法はありますか?

コードは次のとおりです。

<script type="text/javascript">
                    function searchit1() {
                        arrayAdmins = document.getElementById
                        var keyword = document.getElementById('searchbar1').value;
                        var xx = document.getElementById('allUsers');
                        var xy = document.getElementById('selectedUsers');
                        var selectedAdmins = [];
                        i = 0;
                        for (var i = 0; i < xx.length; i++) {
                            if (xx.getElementsByTagName('option')[i].innerHTML.toLowerCase().indexOf(keyword.toLowerCase()) == 0) {
                                xx.getElementsByTagName('option')[i].style.display = 'block';

                            }
                            else {
                                xx.getElementsByTagName('option')[i].style.display = 'none';

                            }
                        }
                        var j = xy.length;
                        for (var i = 0; i < xy.length; i++) {
                            if (xy.getElementsByTagName('option')[i].innerHTML.toLowerCase().indexOf(keyword.toLowerCase()) == 0) {
                                xy.getElementsByTagName('option')[i].style.display = 'block';

                            }
                            else {
                                xy.getElementsByTagName('option')[i].style.display = 'none';

                            }
                        }
                    }

                </script>

ありがとうございました

4

1 に答える 1

2

フォーム コントロールのスタイルは、ブラウザーやオペレーティング システム間で一貫していません。<option>Firefox では、プロパティを操作して要素を表示/非表示にできますdisplayが、Chrome ではできません。IEについてはわかりません。

これを行う最も安全な方法は、どこかにオプションの完全なリスト (値またはオブジェクトの配列) を用意<select>し、そのリストに基づいて必要に応じて要素を追加/削除することです。

于 2012-12-17T13:29:18.813 に答える