为什么它只能运作一次?

时间:2015-06-15 11:44:26

标签: javascript jquery html css

它必须是一个永远的切换div。没有使用“切换”方法。

$(document).ready(function(){
      function brFun() {
        $('div').addClass('br');
        setTimeout('$(\'div\').removeClass(\'br\')', 2000)
      };
      setInterval(brFun, 2000);
    });

1 个答案:

答案 0 :(得分:4)

问题是延迟,只要brFun添加了类,就会执行超时,这将在2 secs区间

中执行时删除类
$(document).ready(function () {
    function brFun() {
        $('div').addClass('br');
        setTimeout('$(\'div\').removeClass(\'br\')', 2000)
    };
    setInterval(brFun, 4000);
});



$(document).ready(function() {
  function brFun() {
    $('div').addClass('br');
    setTimeout('$(\'div\').removeClass(\'br\')', 2000)
  };
  setInterval(brFun, 4000);
});

.br {
  color: red;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div>soemt message</div>
&#13;
&#13;
&#13;

不使用第二个计时器

$(document).ready(function () {
    var $div = $('div');

    function brFun() {
        if ($div.hasClass('br')) {
            $div.removeClass('br');
        } else {
            $div.addClass('br');
        }
    };
    setInterval(brFun, 2000);
});

演示:Fiddle

或更短

$(document).ready(function () {
    var $div = $('div');

    function brFun() {
        $div[($div.hasClass('br') ? 'remove' : 'add') + 'Class']('br');
    };
    setInterval(brFun, 2000);
});

演示:Fiddle