5

私の選択ボックス機能の一部として、入力された選択ボックスの内容をクリアしてから、空のボックスにオプションを挿入しています。選択ボックスが正しくクリアされておらず、多くのオプションが削除されていません。次のコードを使用して、選択ボックスの内容をクリアしています。

for(var i = 0; i < document.getElementById(selectbox).options.length; i++)
    document.getElementById(selectbox).options[i] = null;

すべてのオプションが選択ボックスから削除されないのはなぜですか?

4

4 に答える 4

15

あなたは簡単に行うことができます

 document.getElementById(selectbox).options.length = 0;

optionsほぼ同じように要素を 1 つずつ削除することもできますが、反復するときは変更の長さを考慮する必要があります。反復中に削除する正しい方法は

for (var i=document.getElementById(selectbox).options.length; i-->0;)
    document.getElementById(selectbox).options[i] = null;

しかし、もちろん、最初の解決策はより簡単です。

于 2012-11-26T15:48:03.917 に答える
1

選択リストのすべてのオプションをクリアする代替のより簡潔な方法として、JavaScript の誤った値であるゼロを利用して、単純に Dom からオプションを削除することができます。

function clearSelectList(list) {
    // when length is 0, the evaluation will return false.
    while (list.options.length) {
        // continue to remove the first option until no options remain.
        list.remove(0);
    }
}

使用法は次のようになります。

var list = document.getElementById("selectbox");
clearSelectList(list);

またはより簡潔に:

clearSelectList(document.getElementById("selectbox"));
于 2016-08-20T00:59:08.140 に答える
1
var selectbox = document.getElementById(selectbox);

document.getElementById("emptyBox").innerHTML = selectbox.innerHTML;
selectbox.innerHTML = "";
于 2012-11-26T15:54:50.327 に答える