其他声明不起作用

时间:2017-12-28 16:47:05

标签: javascript if-statement

我不知道为什么我的其他声明不起作用。

这是我第一次真正发生,我使用console.log()进行了检查。

这是我的代码:

setTimeout(function() {
  var b = 2;
  var d = 80000;
  if ("div[class='resultInfo resultLose']") {
    setTimeout(function() {
      var a = ($("input[name='_4']").val().replace(/\s+/g, ''));
      var c = a * b;
      $("input[name='_4']").val(c);
      $("input[value='Play!']").click();
    }, 1000);
  } else if ("div[class='resultInfo resultWin']") {
    setTimeout(function() {
      $("input[name='_4']").val(d);
      $("input[value='Play!']").click();
    }, 1000);
  }
}, 4500);

我试过:

  1. 删除setTimeout
  2. 中的if
  3. 删除“if ("div[class='resultInfo resultWin']")
  4. 即使ifelseif,也只使用第一个true,我不知道该怎么做。

3 个答案:

答案 0 :(得分:2)

if条件中有一个非空字符串,每次都会计算为true。所以永远不会达到阻止。

答案 1 :(得分:2)

您当前的if和else / if条件只是测试随机字符串的真实性,该字符串将始终评估为true。由于第一个条件的计算结果为true,因此您将始终跳过else if条件(即使在此实例中也会评估为true)。

您实际上想要测试的是,是否存在与作为选择器字符串的字符串匹配的元素。如果是这种情况,那么最简单的解决方法是将if和else语句更改为更像jQuery语句并检查结果的长度。

if ($("div[class='resultInfo resultLose']").length > 0)

else if ($("div[class='resultInfo resultWin']").length > 0)

答案 2 :(得分:1)

您的代码没有意义。

您没有输入else if,因为您的if将始终评估为true

if ("div[class='resultInfo resultLose']")将始终为true,因为您没有进行任何比较,而是在评估字符串。这与做if (true)一样。

我想你在那里缺少一些代码,比如JQuery选择或类似的东西。