Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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 如何为jQuery.append($(“,{…}”)的每个三元大小写添加多于1个操作?_Javascript_Jquery - Fatal编程技术网

Javascript 如何为jQuery.append($(“,{…}”)的每个三元大小写添加多于1个操作?

Javascript 如何为jQuery.append($(“,{…}”)的每个三元大小写添加多于1个操作?,javascript,jquery,Javascript,Jquery,我正在使用jQuery向select元素添加多个选项元素。根据数据的值,选项的文本以及是否禁用它是不同的。向select元素添加选项元素的顺序应按时间顺序,因为它们是交付选项 理想情况下,我想添加if-else语句,但这不起作用。条件三元运算符确实起作用,但它似乎只适用于每种情况下的单个操作 例如: 特定选项的默认值为“8/1 tussen 14:00-15:00 |€4.95” 如果data.response小于0,则应为“8/1 tussen 14:00-15:00 | Vol”,并且应禁用

我正在使用jQuery向select元素添加多个选项元素。根据数据的值,选项的文本以及是否禁用它是不同的。向select元素添加选项元素的顺序应按时间顺序,因为它们是交付选项

理想情况下,我想添加if-else语句,但这不起作用。条件三元运算符确实起作用,但它似乎只适用于每种情况下的单个操作

例如:

特定选项的默认值为“8/1 tussen 14:00-15:00 |€4.95” 如果data.response小于0,则应为“8/1 tussen 14:00-15:00 | Vol”,并且应禁用该选项。否则,应返回该选项的已启用默认值

以下是我目前正在尝试的:

$.each(timeSlotsObj, function(key, value) {
  var option_date = value.split(" ")[0].replace('/', '-'),
      option_slot = value.split(" ")[2];

  $.get("http://<REDACTED>/availability/" + selected_retailer_id + "/" + option_date + "/" + option_slot, function(data) {
    delivery_time_element.append($("<option/>", {
        value: key,
        text: data.response < 1 ? (
          new_value = value.split(' ')
          new_value[4] = 'Vol'
          new_value.join(' ')
        ) : value,
        disabled: data.response < 1 ? true : false
    }));
  });
});

我还可以尝试什么?

您应该在每个操作后添加逗号,如下所示:

$.get("http://<REDACTED</availability/" + selected_retailer_id + "/" + option_date + "/" + option_slot, function(data) {
  delivery_time_element.append($("<option/>", {
      value: key,
      text: data.response < 1 ? (
        new_value = value.split(' '), // <<<<
        new_value[4] = 'Vol', // <<<<
        new_value.join(' ')
      ) : value,
      disabled: data.response < 1 ? true : false
  }));
});

在这种情况下,括号中最后一个逗号分隔的值将是要分配的值。

我强烈建议将该逻辑移到一个单独的函数中

$.get("http://<REDACTED</availability/" + selected_retailer_id + "/" + option_date + "/" + option_slot, function(data) {
  var vol = function(val) {
    var parts = value.split(' ');
    parts[4] = "Vol";
    return parts.join(' ');
  };
  delivery_time_element.append($("<option/>", {
      value: key,
      text: data.response < 1 ? vol(value) : value,
      disabled: data.response < 1 ? true : false
  }));
});

这使得代码更可读,更容易理解。

逗号最常用于缩略语等来缩短表达式,但它们在实际代码中也有一些用途-就我个人而言,我最常用的用法是i=0,l=arr.length;i@narzero回答自己的问题?@ParthTrivedi不过,回答自己的问题没什么错这是一个简单的语法错误案例,应该关闭。@Parth Trivedi,我在发布问题10秒后就发现了这一点。现在看起来很傻。@Rorymcrossan是的,你是对的,但10秒后:作为提示,从代码中删除所有空格和换行符,除了C的内引号。你会发现这些行需要一个分隔符。空格/NewliNE在javascript中不是分隔符。
$.get("http://<REDACTED</availability/" + selected_retailer_id + "/" + option_date + "/" + option_slot, function(data) {
  var vol = function(val) {
    var parts = value.split(' ');
    parts[4] = "Vol";
    return parts.join(' ');
  };
  delivery_time_element.append($("<option/>", {
      value: key,
      text: data.response < 1 ? vol(value) : value,
      disabled: data.response < 1 ? true : false
  }));
});