提问者:小点点

JavaScript-如何在站点加载之前切换它们之间的间隔


有人知道我如何在站点之间的不同间隔之间切换吗? 这是我的代码,但我只有一个间隔为每个站点。 我想在每个站点之间有不同的间隔。 希望有人能帮助我:)

index.php

<!DOCTYPE html>
<html>
    <head>
        <title>Seitenwechsel</title>
        <script type="text/javascript" src="http://code.jquery.com/jquery-3.3.1.min.js"></script>
        <script type="text/javascript" src="script.js"></script>
    </head>
    <body>
        <div id="anzeige"></div>
    </body>
</html>

script.js

var anzeige;
var inhalt;
var position = 0;
var interval = 20000;
$(document).ready(function () {
    anzeige = $("#anzeige");
    inhalt = new Array("site.php", "site1.php", "site2.php", "site3.php", "site4.php");
    loadNext();
    var refresh = setInterval(function () {
                        loadNext();
                      },
                        interval
                    );
});

function loadNext() {
    anzeige.load(inhalt[position]);
    position++;
    if (position >= inhalt.length) {
        position = 0;
    }
}

共1个答案

匿名用户

您可以从setInterval更改为setTimeout,从而基于所讨论的“下一个”站点创建新的超时。

大致如下:

var anzeige;
var inhalt = ["site.php", "site1.php", "site2.php", "site3.php", "site4.php"];
var interval = [20000, 40000, 3000, 20000, 60000];// num elements match inhalt array
var position = 0;
var doNext;
$(document).ready(function () {
    anzeige = $("#anzeige");
    loadNext();
});
function loadNext() {
    anzeige.load( inhalt[position] );
    position++;
    if (position >= inhalt.length) {
        position = 0;
    }
    doNext = window.setTimeout(function(){ loadNext(); }, interval[position] );
}

您可以将吸入interval组合到一个javascript对象中,如果这样做更容易使其合理化的话。 但是,在上面,我只是将相同数量的数组项匹配到每个数组项,所以position只是引用了正确的数组项。

编辑:如果您希望interval元素与当前视图页面相关(如中所示,site1.php应该在40秒内可见,而不是在显示site2.php之前的3秒内可见),则将donext=window.settimeout移动到代码中position++行上方。 只是取决于你如何定义这些数字。 到达下一个站点的时间,或当前站点的时间;)

您可以在此示例页面中看到上述操作:http://bytejunkies.com/test/4266.php

(检查source以查看我为这些设置的时间间隔,也可以查看network选项卡)