【问题标题】:Multiple If Statements in a Row with jQuery使用 jQuery 连续多个 If 语句
【发布时间】:2023-03-21 23:40:03
【问题描述】:

我想在一个函数中添加多个 if 语句。我正在使用 YouTube 的 iFrame API 在视频播放或暂停时执行不同的操作。我目前有以下代码:

      function onPlayerStateChange(newState) {
        console.log(newState);

        if (newState.data == 1) {
          //do something
          return false;
        } else {
          //do something else
          return false;
        }
      }

当我只有第一个 if 语句时它工作得很好,但是当我添加 else 子句时它会中断。如何使用 jQuery 检查多个条件?

【问题讨论】:

  • 这和jQuery有什么关系?你的意思是javascript

标签: jquery api if-statement youtube


【解决方案1】:

newState.data 上使用switch,如下所示:

switch(newState.data){
    case 1:
       //do something
       //break or return true/false
    case 2:
       //Do something else
       break;
    case 3:
       break;
    default:
       //Do something when newState.data is NOT 1, 2 or 3
       break;
}

【讨论】:

  • 这是一个很好的答案。然而,这些是基本的 Javascript 结构,而不是特定于 jQuery 的。我会建议 OP 阅读 javascript :-)
  • 嗯,这似乎不起作用。你必须经历每一个可能的情况吗?如果你不想让它为一个案例做点什么,你可以只插入“break;”吗?
  • 如果您不希望它在特定情况下做任何事情,您可以做 2 件事:1) 将其排除在外 - 这将使其转到 default 案例。 2)按照你自己的建议去做,这将无济于事并打破switch-case,并继续switch之后的代码
【解决方案2】:

带有if ... else 的代码是一种“非此即彼”的方法。我不完全清楚你想要做什么。但是,语法是有效的,所以一定是逻辑失败了。

如果您想执行多个独立操作,请使用连续的if 块,例如:

if (newState.data == 1) {
  //do something
}
if (anotherCondition) {
  //do something more
}
return false;

如果需要满足多个条件:

if (newState.data == 1 && anotherCondition) {
  //do something
  return false;
}

【讨论】:

  • 您的最佳答案本质上是我所做的,但它不起作用(即使我将 return false; 线移动到看起来像您的行。您甚至可以在函数内部执行此操作吗?
  • @Andrew 无论return 语句之后的内容如何,​​都将永远无法到达。但是,您可以有多个退出点 - 就像在问题正文中的代码中一样。任何有效的 JavaScript 都可以进入函数内部。我认为您需要扩展示例的 do something here 部分,以便我们接近合格的答案。
  • 我正在使用 if 语句来暂停和恢复图像旋转器(视频所在的位置)。所以对于第一个 if 语句,代码是: $('#slideshow').cycle('pause');第二个是:$('#slideshow').cycle('resume');。这有帮助吗?
  • @Andrew 是的,这意味着它确实是非此即彼的。 newState 有什么属性? newState.date 的可能值是多少?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-06
  • 2022-01-06
  • 2016-07-30
  • 2011-02-14
相关资源
最近更新 更多