私のコードはIEで動作しますが、Safari、Firefox、およびOperaでは動作しません。 (ビッグサプライズ)
document.getElementById("DropList").options.length=0;
検索したところ、length=0
が好きではないことがわかりました。
私は...options=null
とvar clear=0; ...length=clear
を同じ結果で試しました。
私は一度に複数のオブジェクトにこれをやっているので、私はいくつかの軽量のJSコードを探しています。
以下を使用して、すべての要素を消去することができます。ご了承ください
var select = document.getElementById("DropList");
var length = select.options.length;
for (i = 0; i < length; i++) {
select.options[i] = null;
}
選択したHTMLオブジェクトのオプションを削除するには、次のコードを使用します。
function removeOptions(selectbox)
{
var i;
for(i = selectbox.options.length - 1 ; i >= 0 ; i--)
{
selectbox.remove(i);
}
}
//using the function:
removeOptions(document.getElementById("mySelectObject"));
これはすべてのブラウザで機能します。 =)
軽量のスクリプトを使用したい場合は、jQueryを使用してください。 jQueryでは、すべてのオプションを削除するための解決策は次のようになります。
$("#droplist").empty();
おそらく、最もきれいな解決策ではありませんが、1つずつ削除するよりも確実に簡単です。
document.getElementById("DropList").innerHTML = "";
これが最善の方法です。
function (comboBox) {
while (comboBox.options.length > 0) {
comboBox.remove(0);
}
}
これが最短の方法です:
document.getElementById('mySelect').innerText = null
1行、ノー、ノーJQuery、単純です。
function removeOptions(obj) {
while (obj.options.length) {
obj.remove(0);
}
}
これは少し現代的で純粋なJavaScriptです。
document.querySelectorAll('#selectId option').forEach(option => option.remove())
JQueryを使用していて、選択コントロールのIDが "DropList"の場合は、この方法でそのオプションを削除できます。
$('#DropList option').remove();
実際にはdatalistのように、どんなオプションリストでも私のために働きます。
それが役に立てば幸い。
選択は両方を持つことができることに注意してください
- optgroup&
- オプションコレクション
その子として。
そう、
方法1
var selectElement = document.getElementById('myselectid');
selectElement.innerHTML = '';
方法2
var selectElement = document.getElementById('myselectid');
selectElement.textContent = '';
私はテストした、両方ともChrome上で動作する。
私はもっとシンプルで昔風の方法#1が好きです。
とPrototypeJS:
$('yourSelect').select('option').invoke('remove');
やってみる
document.getElementsByTagName("Option").length=0
あるいは、removeChild()関数を調べてください。
あるいは、あなたがjQueryフレームワークを使うならば。
$("DropList Option").each(function(){$(this).remove();});
JQueryを使用することは、それを実行するためのより美しく、より短く、よりスマートな方法です。
$('#selection_box_id').empty();
これはオプションを消去するために使用できます。
function clearDropDown(){
var select = document.getElementById("DropList"),
length = select.options.length;
while(length--){
select.remove(length);
}
}
<select id="DropList" >
<option>option_1</option>
<option>option_2</option>
<option>option_3</option>
<option>option_4</option>
<option>option_5</option>
</select>
<button onclick="clearDropDown()">clear list</button>
逆に行きなさい。その理由は、削除するたびにサイズが小さくなることです。
for (i = (len-1); i > -1; i--) {
document.getElementById("elementId").remove(i);
}
アイテムを逆に削除する必要があります、そうでなければそれはエラーの原因となります。また、予期しない動作を引き起こす可能性があるため、単に値をnull
に設定することはお勧めしません。
var select = document.getElementById("myselect");
for (var i = select.options.length - 1 ; i >= 0 ; i--)
select.remove(i);
それともあなたが好めば、あなたはそれを関数にすることができます:
function clearOptions(id)
{
var select = document.getElementById(id);
for (var i = select.options.length - 1 ; i >= 0 ; i--)
select.remove(i);
}
clearOptions("myselect");
最も簡単な解決策が最善ですので、あなただけが必要です:
var list = document.getElementById('list');
while (list.firstChild) {
list.removeChild(list.firstChild);
}
<select id="list">
<option value="0">0</option>
<option value="1">1</option>
</select>
var select = document.getElementById("DropList");
var length = select.options.length;
for (i = 0; i < length; i++) {
select.options[i].remove();
}
願って、このコードはあなたを助けます
それが最善の解決策だと思います。です
$( "#myselectid")。html( '');
上記の回答のコードは、リストを完全に削除するためにわずかな変更が必要です。このコードを確認してください。
var select = document.getElementById("DropList");
var length = select.options.length;
for (i = 0; i < length;) {
select.options[i] = null;
length = select.options.length;
}
長さを更新すると、ドロップダウンリストからすべてのデータが削除されます。これが誰かに役立つことを願っています。
元の質問の問題は、今日はもう意味がないことを指摘しておきます。そしてその解決策のさらに短いバージョンがあります。
selectElement.length = 0;
両方のバージョンがFirefox 52、Chrome 49、Opera 36、Safari 5.1、IE 11、Edge 18、Chromeの最新バージョン、Firefox、Samsung Internet、およびAndroidのUCブラウザ、Safari onで動作することをテストしました。 iPhone 6S、Android 4.2.2の標準ブラウザ。私はそれが今そこにあるどんなデバイスとも絶対に互換性があると結論づけることが安全であると思うので、私はこのアプローチをお勧めします。
var select = document.getElementById('/*id attribute of your select here*/');
for (var option in select){
select.remove(option);
}
IEをサポートする必要があり、選択リストに100を超える項目がある場合は、選択を次のような関数に置き換えることを強くお勧めします。
function clearOptions(select) {
var selectParentNode = select.parentNode;
var newSelect = select.cloneNode(false); // Make a shallow copy
selectParentNode.replaceChild(newSelect, select);
return newSelect;
}
Selectパラメータは、jqueryセレクタまたはdocument.getElementBy呼び出しのいずれかからの要素になります。唯一のマイナス面は、あなたがselectに結び付けたイベントを失うことですが、関数から返されるのでそれらを簡単に再アタッチすることができます。私は〜3kのアイテムを持っていたセレクトで作業していました、そして私が新しいコンテンツでそれを更新することができるようにIE9でセレクトをクリアするのに4秒かかるでしょう。このようにしてほぼ瞬時にそれをやっています。
while(document.getElementById("DropList").childNodes.length>0)
{
document.getElementById("DropList").removeChild(document.getElementById("DropList").childNodes[0]);
}