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 回答