首页 > 解决方案 > jQuery setIntervel 直到条件为真

问题描述

页面加载后,我喜欢每隔 1 秒检查一次条件,直到它变为真,然后终止该功能。我尝试了以下脚本,该脚本简单地在页面启动时增加了繁重的负载。

$(document).ready(function () {
  setInterval(function () {
    for (var i = 0; i < 1; ) {
      if ($(".showPrice").length) {
        console.log("yes");
        i = 1;
      } else {
        return false;
      }
    }
  }, 1000);
});

标签: javascriptjquerysetinterval

解决方案


为了能够清除间隔,您需要对间隔的引用并将其传递给clearInterval(),只需将其分配给一个变量:

$(document).ready(function () {
  let interval = setInterval(function () {
    if ($(".showPrice").length) { 
      clearInterval(interval);
      console.log('Cleared!');
    }
  }, 1000);
  
  setTimeout(function(){
    $('.placeholder').html('<div class="showPrice">11.00 $</div>');
  }, 3000)
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<body>
  <div class="placeholder"></div>
</body>


推荐阅读