Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使setInterval只运行一次?_Javascript_Jquery - Fatal编程技术网

Javascript 如何使setInterval只运行一次?

Javascript 如何使setInterval只运行一次?,javascript,jquery,Javascript,Jquery,我正在尝试为一个有第三方应用的站点运行modals测试。我能让它工作的唯一方法是使用setInterval,但它会无限期地运行我的.append。我尝试过setTimeout,但没有效果,也尝试过在没有setInterval的情况下运行它。如果我能在数到1后设置一个计数器停止,我想它会解决我的问题。以下是我到目前为止的情况。另外,请注意,这些模态是有角度的,我不太熟悉 $(document).ready(function() { vwo_$(function(){ setIn

我正在尝试为一个有第三方应用的站点运行modals测试。我能让它工作的唯一方法是使用setInterval,但它会无限期地运行我的.append。我尝试过setTimeout,但没有效果,也尝试过在没有setInterval的情况下运行它。如果我能在数到1后设置一个计数器停止,我想它会解决我的问题。以下是我到目前为止的情况。另外,请注意,这些模态是有角度的,我不太熟悉

$(document).ready(function() {
    vwo_$(function(){
      setInterval(function() {
        vwo_$(".reveal-modal").append("<hr> <h3> Text \"pz330\" to Shell1 and redeem your Pennzoil® oil change coupon today. </h3> <br> <p> <em>Message and data rates may apply. For more details, please see our <a href=\"http://www.shell.com/privacy.html\" target=\"_blank\">Privacy Policy</a> and <a href=\"http://www.shell.com/terms-of-use.html\" target=\"_blank\">Terms and Conditions</a>. </em> </p> <hr> <a data-ng-click=\"redeemOffer(\'clickPrintCTA\');\" href=\"redeem?print=true\" class=\"button radius expand desktopCTABtn\" data-equalizer-watch=\"\"> <div><i class=\"fa fa-print fa-lg\"></i>&nbsp;&nbsp;<span>PRINT COUPONS</span></div> </a></div>");
      }, 500);
    });
$(文档).ready(函数(){
vwo_$(函数(){
setInterval(函数(){
vwo_$(“.discover modal”)。在Shell1中附加(
文本\“pz330\”,并在今天兑换Pennzoil®换油优惠券。
消息和数据费率可能适用。有关更多详细信息,请参阅我们的和。


”; }, 500); });
您可以检查元素是否存在,当元素存在时,取消间隔计时器

var timer = setInterval(function() {
   if(vwo_$(".reveal-modal").length ){
      clearInterval(timer);
      vwo_$(".reveal-modal").append("...");
   }         
}, 200);

这也将允许您减少间隔时间。

我尝试设置超时无效
尝试设置超时时遇到什么问题?
setInterval
在一个名为
setTimeout
的特殊函数中只运行一次。