0

動作状態のスクリプトを持っていますが、多くの for ループがあるので、これを行う方法はあります...これを簡素化するために...スクリプトを初めて使用するので、これについて親切に助けてください....

 function change()
        {
            //document.getElementById("Geography").options[7]=new Option("", "newval", true, false);

           var geo = document.getElementById("Geography").options;
           var zon = document.getElementById("zone").options;
           var coun = document.getElementById("country").options;

            for (var i = 0; i < geo.length; i++)
            {
                if (geo[i].innerHTML == "Null Value" || geo[i].innerHTML == "")
                {
                    document.getElementById("Geography").options[i] = null;
            }       

        }

           for (var i = 0; i < coun.length; i++)
            {
                alert("Loop1" + i);
                if (coun[i].innerHTML == "Null Value")
                {

                document.getElementById("country").options[i] = null;
                }
                }

           for (var i = 0; i < zon.length; i++)
            {
                //alert("Loop1" + i);
                if (zon[i].innerHTML == "Null Value")
                {
                        document.getElementById("zone").options[i] = null;

                }
                }
    }
4

2 に答える 2

0

オプションを削除するremoveChild()には、親要素を呼び出します。

var geoSel = document.getElementById("Geography"); 
var geo = geoSel.options;

for (var i = geoSel.options.length-1; i >= 0; i--) {
    if (geo[i].innerHTML == "Null Value" || geo[i].innerHTML == "") {
        geo.removeChild(geo[i]);
    }
}

子を削除すると、後続のすべての子のインデックスが下にシフトされるため、カウントアップではなくカウントダウンします。カウントアップ ループでは、要素がスキップされます。

于 2013-11-12T11:28:57.793 に答える
0

この更新されたデモを使用してください

function change(){
    var optionsArr = [];
    optionsArr.push(document.getElementById("Geography").options);
    optionsArr.push(document.getElementById("zone").options);
    optionsArr.push(document.getElementById("country").options);

    var optArrlenght = optionsArr.length;
    for ( var j = 0; j < optArrlenght; j++){
        var options = optionsArr[j];
        var optionslength = options.length;
        for (var i = 0; i < optionslength; i++)
        {
            if (options[i].innerHTML == "Null Value" || options[i].innerHTML == "")
            {
                options[i].remove();
                i--;
                optionslength--;
            }       

        }

    }

}
change();
于 2013-11-12T11:29:40.047 に答える