Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
若有,&;语句Javascript_Javascript_Jquery_Html - Fatal编程技术网

若有,&;语句Javascript

若有,&;语句Javascript,javascript,jquery,html,Javascript,Jquery,Html,我希望有人能在这个问题上帮助我。我真的不知道怎么做。我不知道在javascript中使用哪个函数 我有一个表单名为:“请求加载” 此表单有10个位置,可以从下拉列表中选择。这是“装货地点” 它也有一个下拉菜单来选择“卡车尺寸”:小;中等;沉重的 最后一个下拉列表是“容器大小”,有两个值:“20'容器;40'容器” 在可以选择的10个装货地点中,有3个永远不会使用“小型”或“中型”卡车。“装货地点”的这三个值是:“伦敦;曼彻斯特;利物浦;”(仅举一个例子) 需要这样做: 如果“装货地点”不是“伦敦

我希望有人能在这个问题上帮助我。我真的不知道怎么做。我不知道在javascript中使用哪个函数

我有一个表单名为:“请求加载”

此表单有10个位置,可以从下拉列表中选择。这是“装货地点”

它也有一个下拉菜单来选择“卡车尺寸”:小;中等;沉重的

最后一个下拉列表是“容器大小”,有两个值:“20'容器;40'容器”

在可以选择的10个装货地点中,有3个永远不会使用“小型”或“中型”卡车。“装货地点”的这三个值是:“伦敦;曼彻斯特;利物浦;”(仅举一个例子)

需要这样做:

如果“装货地点”不是“伦敦”、“曼彻斯特”、“利物浦”和“卡车大小”“小型”或“中型”

它还必须:

如果“装货地点”不是“伦敦”、“曼彻斯特”、“利物浦”和“卡车尺寸”
是“重型”,则将“集装箱尺寸”显示为“40”集装箱

我的坏代码:

$(“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
    元素提供了下拉行为,如在标准HTML
    div
    元素中,元素不会生成
    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语句更容易读取?更容易读取意味着错误更少

    并考虑一下当你需要改变容器大小的逻辑时会发生什么。