javascript-根据第一个字段中的选择在第二个字段上显示下拉列表

javascript-根据第一个字段中的选择在第二个字段上显示下拉列表,javascript,html-select,Javascript,Html Select,我有两个字段客户类别和客户类型, 当我在customer类别中选择一个元素时,我只需要在下拉列表中显示customer type中的一组元素,其余的不应该出现。 如何用javascript编写它。这是我试过的一个,但没有产生正确的结果 var custcategory = document.getElementById("custcatid"); var custtypes = document.getElementById('custtypeid').options; alert('yes')

我有两个字段客户类别和客户类型, 当我在customer类别中选择一个元素时,我只需要在下拉列表中显示customer type中的一组元素,其余的不应该出现。 如何用javascript编写它。这是我试过的一个,但没有产生正确的结果

var custcategory = document.getElementById("custcatid");
var custtypes = document.getElementById('custtypeid').options;
alert('yes');
var n = custtypes.length;
var allowedtype;

if (custcategory.options[custcategory.selectedIndex].value == "ANALOGUE") {
    alert('ANALOGUE');
    allowedtype = 'CATV,CATV RURAL';
}

else if (custcategory.options[custcategory.selectedIndex].value == "COMMERCIAL") {
    alert('COMMERCIAL');
    allowedtype = ' ,3ST HOTEL,4ST HOTEL,5ST HOTEL';
}

else if (custcategory.options[custcategory.selectedIndex].value == "DAS") {
    alert('DAS');
    allowedtype = ' ,DAS PHASE1,DAS PHASE2,DAS PHASE3,DAS PHASE4';
}

else if (custcategory.options[custcategory.selectedIndex].value == "DTH") {
    alert('DTH');
    allowedtype = ' ,DTH';
}

var idx = 0;

for (var i = 0; i < n; i++) {
    var type = custtypes[i].value;
    var found = allowedtype.search(type);

    if (found <= 0) {
        custtypes[i].style.display = 'none';
    }
    else if (idx == 0) {
        idx = 1;
        document.getElementById('ctl00_uxPgCPH_custtype').selectedIndex = i;
    }

}

alert('Done..!');

如果我理解正确,您正在尝试根据第一个选择元素中选择的内容筛选第二个选择元素

如果是这样的话,我将下面的代码片段放在一起,这可能会对您有所帮助。它可能会被进一步优化,但我觉得它应该会帮助你开始

作用{ 变量类={ 类别:'。选择“类别”, 类型:'。选择类型' }, 地图={ 模拟:[ "有线电视",, “农村有线电视” ], 商业:[ “3ST酒店”, “第四酒店”, “第五酒店” ], 达斯:[ “DAS第一阶段”, “DAS第二阶段”, “DAS第3阶段” ] }, categorySelect=document.querySelectorCLASSES.categories, typeSelect=document.querySelectorCLASSES.types, filterTypes=functionval{ //根据值过滤器选择类型。 var opts=typeSelect.options, allowedOpts=map[val]; typeSelect.value=允许选择[0]; forvar i=0;i您是否尝试过让隐藏的第三个包含所有客户类型条目的方法?在for循环之前,您将清空可见的客户类型列表,然后从隐藏的客户类型列表填充它?另外:您的else-if部分永远不会运行,因为idx从1开始,因此永远不能为0。