如果语句返回false,即使其为true

时间:2019-07-20 22:18:17

标签: jquery

我设置了计时器,所以当dro大于1时,我希望按钮具有类active,否则删除类if的语句有效,但else无效。有解决方案吗?

    var dro = 5;
    var saboloo = 0;
    function setup(){
        var es = $('#dro');
        dro--;
        es.html(dro);
        if(dro == -1){
            es.html(clearInterval(setupInterval));
            $('.wait').html('Game started');
        }
    }
    var setupInterval = setInterval(setup,1000);

    function manamde(){
        if(dro > 1){
            $('button').addClass('active');
        } else {
            $('button').removeClass('active');
        }
    }
    manamde();
  <h1 class="wait"><span value="5" id="dro">5</span>Seconds before the game starts</h1>
<button>start</button>```

1 个答案:

答案 0 :(得分:1)

我认为您只是忘记从manamde()内部调用setup()函数。

您提供的代码只会在初始化时调用一次(因此,将类.active添加为dro的初始设置为5),但是不会在每次{{1 }}。 setInterval语句本身运行正常。

我在下面调整了您的代码,并在if中添加了一些样式,以证明其有效。

让我知道这是否不是您想要的。


演示

.active
var dro = 5;
var saboloo = 0;

function setup() {

  var es = $('#dro');
  
  dro--;
  
  es.html(dro);
  
  if (dro == -1) {
  
    es.html(clearInterval(setupInterval));
    $('.wait').html('Game started');
    
  }
  
  // Add a call to run manamde() from within setup
  // This will then run each second
  manamde();
  
}

var setupInterval = setInterval(setup, 1000);

function manamde() {
  if (dro > 1) {
    $('button').addClass('active');
  } else {
    $('button').removeClass('active');
  }
}

// This is still needed to add .active before the first setInterval is completed
manamde();
.active {
  color: red;
}