首页 > 解决方案 > JavaScript location.reload() 在一定时间后循环关闭同步,为什么?

问题描述

我一直在尝试在原始网站 php 中添加一些代码,以便显示图像 25 秒,然后消失,下一个是显示,然后消失等。

在我的macbook上使用当前代码进行测试时(见下文),一切似乎都运行良好,但是在显示它的酒吧的大显示屏上,它开始重新加载不同步(如果不是在循环中,我想要它)说得通)。

所以现在发生的事情是,显示的最后一个图像消失了,然后显示第一个元素(另一个脚本),并且仅在几秒钟后重新加载页面。重新加载应该是在最后一个图像被隐藏之后。

<script>
    function displayAds() {
        $("#appjs").remove();           // Haal het app.js script weg zodat deze niet meer draait
        $(".container, .row").hide();   // Verberg de content van het klassement/scoreboard
        $("#ad-slides").show();         // Laat de container met ad-slides zien
        $("#slide-een").show();         // Laat de eerste slide zien

        setTimeout(displayAd2, 25000) // Roep de functie voor het laten zien van slide twee aan

    }

    // Deze functie laat, wanneer aangeroepen, de tweede ad slide zien
    function displayAd2() {
        $("#slide-een").hide();     // Verberg de eerste slide
        $("#slide-twee").show();    // Laat de tweede slide zien

        setTimeout(displayAd3, 25000) // Roep de functie voor het laten zien van slide drie aan
    }

    function displayAd3() {
        $("#slide-twee").hide();    // Verberg de tweede slide
        $("#slide-drie").show();    // Laat de derde slide zien

        setTimeout(hideAds, 25000); // Roep hideAds aan na 25 sec om de ads te verbergen en dus het klassement te tonen
    }

    function hideAds() {
        $(".ads").hide();
        $("#ad-slides").hide();
        var assetsssss = "{{ asset('js/app.js') }}"; // Dit is het app js script nu
        $("body").append('<script src="'+assetsssss+'" id="appjs"></script\>'); // Voeg het app js script toe onderaan de pagina zodat deze weer draait
        $(".container, .row").show();// Maak de score content weer zichtbaar

        //setTimeout(displayAds, 90000)  // Begin de loop weer opnieuw na 90 seconden
        location.reload(true);
    }

    // Hier begint het script
       $(document).ready( function() {
       $("#ad-slides").hide();  // Verberg de ad-slides container
       $(".ads").hide();        // Verberg alle ad slides

       setTimeout(displayAds, 90000); // Roep na 90 sec van het laden van de pagina de functie voor het tonen van de eerste slide aan
    });
</script>

所以,我不知道为什么它会在一段时间后开始循环关闭同步。提前感谢您的帮助。

标签: javascriptlocationreload

解决方案


问题是您每次重新加载时都在执行不定式重新加载循环locación.reload(true),称为页面刷新,所有脚本都再次加载,然后displayAds,displayAds2等等再次执行,因为所有这些都是可链接执行的,因为setTimeout当您重新加载页面时$.document.ready它再次执行的功能。这就是为什么您处于重新加载循环中的原因


推荐阅读