若有,&;语句Javascript
我希望有人能在这个问题上帮助我。我真的不知道怎么做。我不知道在javascript中使用哪个函数 我有一个表单名为:“请求加载” 此表单有10个位置,可以从下拉列表中选择。这是“装货地点” 它也有一个下拉菜单来选择“卡车尺寸”:小;中等;沉重的 最后一个下拉列表是“容器大小”,有两个值:“20'容器;40'容器” 在可以选择的10个装货地点中,有3个永远不会使用“小型”或“中型”卡车。“装货地点”的这三个值是:“伦敦;曼彻斯特;利物浦;”(仅举一个例子) 需要这样做: 如果“装货地点”不是“伦敦”、“曼彻斯特”、“利物浦”和“卡车大小”是“小型”或“中型” 它还必须: 如果“装货地点”不是“伦敦”、“曼彻斯特”、“利物浦”和“卡车尺寸”是“重型”,则将“集装箱尺寸”显示为“40”集装箱 我的坏代码:若有,&;语句Javascript,javascript,jquery,html,Javascript,Jquery,Html,我希望有人能在这个问题上帮助我。我真的不知道怎么做。我不知道在javascript中使用哪个函数 我有一个表单名为:“请求加载” 此表单有10个位置,可以从下拉列表中选择。这是“装货地点” 它也有一个下拉菜单来选择“卡车尺寸”:小;中等;沉重的 最后一个下拉列表是“容器大小”,有两个值:“20'容器;40'容器” 在可以选择的10个装货地点中,有3个永远不会使用“小型”或“中型”卡车。“装货地点”的这三个值是:“伦敦;曼彻斯特;利物浦;”(仅举一个例子) 需要这样做: 如果“装货地点”不是“伦敦
$(“div.trucksize”).change(函数(){
如果($(this.val()=“小-5吨”){
美元(“div.containersize”).val(“20'集装箱”);
}
如果($(this.val()=“中等-10吨”){
美元(“div.containersize”).val(“20'集装箱”);
}
如果($(this).val()=“重型-24吨”和($(div.loadingplace)).val()!=[“伦敦”、“曼彻斯特”、“利物浦”]{
美元(“div.containersize”).val(“40'集装箱”);
}
});
您非常接近解决方案,只需检查数组中是否包含loadingplace
值
所以这一行:
$("div.loadingplace").val() != ["London", "Manchester", "Liverpool"]
应写为:
$.inArray($("div.loadingplace").val(), ["London", "Manchester", "Liverpool"]) === -1
是一个函数,用于在数组中搜索指定的值并返回其索引(如果未找到,则返回-1)-因此需要检查该值是否大于-1(-1
)。在您的情况下,如果要检查值是否不存在,则更容易,因此您可以执行==-1
同一行中还有一个语法错误,只是缺少一个结束括号。这不是一个银弹答案,但它应该为您指出正确的方向。这应该不会太难 好吧,那么 三个下拉列表-
getContainerSize
var currentLocation = $('#location').val();
var currentTruckSize = $('#truckSize').val();
// Check if its a unique city.
var isInUniqueCities = ["London", "Manchester", "Liverpool"].indexOf(currentLocation) !== -1;
if (!isInUniqueCities && ['Small', 'Medium'].indexOf(currentTruckSize) === -1) {
return '20 Container'
}
if (!isInUniqueCities && currentTruckSize === 'Large') {
return '40 Container';
}
// Handle other conditions, your question seems to be incomplete.
然后,您应该在发生位置和卡车大小下拉列表的事件时调用此函数,以确保事情正常运行。也许您使用的库为
div
元素提供了下拉行为,如在标准HTMLdiv
元素中,元素不会生成change
事件。因此,在下面的代码段中,我将使用<代码>选择元素
代码中的一些问题:
- 要检查字符串是否出现在数组中,您不能仅与
进行比较,而应在现代浏览器中使用类似!=
或indexOf()
的方法includes()
- 您不仅应响应卡车尺寸选择中所做的更改,还应响应位置选择,因为这也可能影响集装箱尺寸的结果值
- 您对城市进行的检查似乎位于错误的位置,因为您写道这些城市从不使用“小”或“中”。因此,您需要在选择这些“小”或“中”值时进行城市检查,这表明违反了规则
- 当选择这三个城市中的一个时,您可以强制卡车尺寸为“重型”,因为在这些情况下,这似乎是唯一允许的值(尽管您问题中的信息在“它也必须”部分中相互矛盾)
- 我猜您还希望将容器大小下拉列表设置为只读,以避免用户重写自动逻辑
$('select.loadingplace,select.trucksize').change(函数(){
如果($('select.trucksize').val()=='Heavy-24吨'|
[“伦敦”、“曼彻斯特”、“利物浦”].indexOf($('select.loadingplace').val())>-1){
$('select.containersize').val(“40'容器”);
$('select.trucksize').val('Heavy-24吨');
}否则{
$('select.containersize').val(“20'容器”);
}
});
装货地点:
伯明翰
利兹
利物浦
伦敦
曼彻斯特
卡车尺寸:
小型-5吨
中等-10吨
重-24吨
容器大小:
20英尺集装箱
40'集装箱
避免那些令人困惑的if语句
您发现了一个问题,您无法找出如何使一些复杂的if语句工作。理解if语句的困难是您的代码的问题,而不是您的问题。这些构造很难编写和维护
为了一年内支持此代码的人的利益,您希望尽快停止依赖复杂的if语句
没有if语句的示例
我模拟了一个例子,演示了如何在没有任何if语句的情况下实现这一点(并不是说每个if
语句都是不好的)
在本例中,卡车和集装箱尺寸的逻辑包含在一个大的位置对象中。查看它如何比if语句更容易读取?更容易读取意味着错误更少
并考虑一下当你需要改变容器大小的逻辑时会发生什么。