为什么不';这个级联下拉列表中的第三个和第四个框javascript没有填充吗?

为什么不';这个级联下拉列表中的第三个和第四个框javascript没有填充吗?,javascript,cascading,Javascript,Cascading,应该是非常简单的级联下拉列表,第三个和第四个下拉列表正在填充 从第一个下拉列表中选择将按预期填充第二个下拉列表。但从第二个下拉列表中选择不会影响第三个或第四个下拉列表 我肯定我错过了一些明显的东西,但我找不到。谢谢你的帮助 变量clientPlus={ “客户A”:{ “交易性”:{ “单身”:[“成功”,“破产”], “第三方”:[“成功”、“失败”], “联合”:[“成功”、“失败”] }, “每月”:{ “单身”:[“成功”,“破产”], “第三方”:[“成功”、“失败”], “联合”

应该是非常简单的级联下拉列表,第三个和第四个下拉列表正在填充

从第一个下拉列表中选择将按预期填充第二个下拉列表。但从第二个下拉列表中选择不会影响第三个或第四个下拉列表

我肯定我错过了一些明显的东西,但我找不到。谢谢你的帮助


变量clientPlus={
“客户A”:{
“交易性”:{
“单身”:[“成功”,“破产”],
“第三方”:[“成功”、“失败”],
“联合”:[“成功”、“失败”]
},
“每月”:{
“单身”:[“成功”,“破产”],
“第三方”:[“成功”、“失败”],
“联合”:[“成功”、“失败”]
}
},
“客户B”:{
“交易性”:{
“单身”:[“成功”,“破产”],
“第三方”:[“成功”、“失败”],
“联合”:[“成功”、“失败”]
},
“每月”:{
“单身”:[“成功”,“破产”],
“第三方”:[“成功”、“失败”],
“联合”:[“成功”、“失败”]
}
},
“客户C”:{
“交易性”:{
“单身”:[“成功”,“破产”],
“第三方”:[“成功”、“失败”],
“联合”:[“成功”、“失败”]
},
“每月”:{
“单身”:[“成功”,“破产”],
“第三方”:[“成功”、“失败”],
“联合”:[“成功”、“失败”]
}
}
}
window.onload=函数(){
//获取html元素
var clientSel=document.getElementById(“clientSel”);
var invoicetypeSel=document.getElementById(“invoicetypeSel”);
var payerSel=document.getElementById(“payerSel”);
var sorbSel=document.getElementById(“sorbSel”);
//加载客户端
for(客户端中的var客户端){
clientSel.options[clientSel.options.length]=新选项(客户端,客户端);
}
//客户变更
clientSel.onchange=函数(){
invoicetypeSel.length=1;//首先删除所有选项栏
payrsel.length=1;//首先删除所有选项栏
sorbSel.length=1;//首先删除所有选项栏
如果(此.selectedIndex<1)
return;//完成
for(clientPlus[this.value]中的var invoicetype){
invoicetypeSel.options[invoicetypeSel.options.length]=新选项(invoicetype,invoicetype);
}
}
//发票类型已更改
invoicetypeSel.onchange=函数(){
payrsel.length=1;//首先删除所有选项栏
sorbSel.length=1;//首先删除所有选项栏
如果(此.selectedIndex<1)
return;//完成
对于(clientPlus中的var付款人[this.value]){
payerSel.options[payerSel.options.length]=新选项(付款人,付款人);
}
}
//付款人变更
payrsel.onchange=函数(){
sorbSel.length=1;//首先删除所有选项栏
如果(此.selectedIndex<1)
return;//完成
var sorbs=clientPlus[clientSel.value][invoicetypeSel.value][this.value];
对于(变量i=0;i

选择发票类型:

选择付款人类型:

成功还是失败?
invoicetypeSel.onchange
中,您的for从clientPlus获取值,而[Second Value]您忘记了还提供对象的第一个值

for (var payer in clientPlus[clientSel.value][this.value]) {
    payerSel.options[payerSel.options.length] = new Option(payer, payer);
}

clientSel.onchange
invoiceTypeSel.onchange
气缸的
控制条件相同。换句话说,在这两种情况下,它们都在相同的键值对上迭代(即
cientPlus[some ID]
)。在第一种情况下,当根据客户机选择填充“invoiceType”时,这是可以的,因为您将获得一个具有两个属性的对象:每月和事务(每个属性都引用一个对象),但在第二种情况下,当您要填充“playerType”时,使用相同的周期很难令人满意。相反,您希望在对象上进行更深一层的迭代:
clientPlus[some ID][无论invoiceType的选择是什么]

然而,应该注意的是,这种数据结构似乎是多余的。相同且反复重复的值最好只存储一次


变量clientPlus={
“客户A”:{
“交易性”:{
“单身”:[“成功”,“破产”],
“第三方”:[“成功”、“失败”],
“联合”:[“成功”、“失败”]
},
“每月”:{
“单身”:[“成功”,“破产”],
“第三方”:[“成功”、“失败”],
“联合”:[“成功”、“失败”]
}
},
“客户B”:{
“交易性”:{
“单身”:[“成功”,“破产”],
“第三方”:[“成功”、“失败”],
“联合”:[“成功”、“失败”]
},
“每月”:{
“单身”:[“成功”,“破产”],
“第三方”:[“成功”、“失败”],
“联合”:[“成功”、“失败”]
}
},
“客户C”:{
“交易性”:{
“单身”:[“成功”,“破产”],
“第三方”:[“成功”、“失败”],
“联合”:[“成功”、“失败”]
},
“每月”:{
“单身”:[“成功”,“破产”],
“第三方”:[“成功”、“失败”],
“联合”:[“成功”、“失败”]
}
}
}
window.onload=函数(){
//获取html元素
var clientSel=document.getElementById(“clientSel”);
var invoicetypeSel=文档。