Javascript:通过获取数组长度的分钟模数来检索对象的数组索引

时间:2017-10-13 19:18:03

标签: javascript arrays

在我的javascript程序中,我创建了对象和5个实例。我创建了数组。之后我按日期对象和数组长度获取当前分钟数。现在我想做以下事情: 1)。通过获取具有数组长度的分钟模数来确定要检索对象的索引。 2)。显示URL的链接。 3)。将计时器设置为每分钟运行一次意味着我们应该每分钟都能看到不同的链接。

确定索引我计算的数组长度和分钟模数。所以我仍然很困惑通过获取数组长度的分钟模数来检索对象。

我还设置了时间间隔,它应该每分钟更改链接。但它似乎没有用。任何人都可以帮助我吗?

代码:

 <!DOCTYPE html>
<html>
<head>
    <style>

    div p {
        text-align: center;
        font-family: monospace;
        font-size: 30px;
    }

    a{
        text-align: center;
        text-decoration: none;
        color: #3bb570;

    }   

    a:hover{
        color:#efa5db
    }

</style>
<title>lab15</title>

</head>
<body background="lab15_images/pink.jpg">
    <div class="myDiv" id="div">
        <p> Click on the link to see a website. </p>
        <!-- <p><b><a href="#" id="link">  </a></b></p> -->
        <p id="link">  </p>
    </div>

    <script>
        function web(url, name) {
            this.url = url;
            this.name = name;
        }

        var myWeb = new site("http://www.cnn.com/", "CNN");
        var myWeb2 = new site("http://www.bbc.com/news", "BBC");

        var array = new Array(myWeb, myWeb2);


        setInterval(changeLink, 60000);

        function changeLink() {

            var n = new Date().getMinutes();
            var site = instances[index] 
            var counter = 0;

            var ele = document.getElementbyId("link");
            ele.innerHTML = instances[counter];
            counter++;

            if(counter >= instances.length) {
                counter = 0;
            }

            var a = document.createElement('a');
            var myDiv = document.getElementbyId("div");
            a.href = site.the_url;
            myDiv.appendChild(a);
            document.body.appendChild(myDiv);

        }

    </script>
</body>
</html>

1 个答案:

答案 0 :(得分:2)

m m % n的模数永远不会大于n - 1。所以你有0到60分钟,你想将它转换为数组索引0 - 4,你只需要minutes % array.length。换句话说,只需要一分钟即可获得特定网站:

 var n = new Date().getMinutes();
 var index = n % instances.length
 var site = instances[index] 

您实际上不需要var mod = n % 60;,因为d.getMinutes()将始终返回0到59之间的数字。

我会将这些计算放在changeLink()函数中:

function changeLink() {
    var n = new Date().getMinutes();
    var index = n % instances.length
    var site = instances[index] 

    var a = document.createElement('a');
    var myDiv = document.getElementById("div");
    myDiv.appendChild(a);
    a.title = site.website_name;
    a.href = site.the_url;
    document.body.appendChild(myDiv);
}

这会给您带来另一个问题:当您显示所有网站时会发生什么?你只是不断重复和追加相同的网站?你停止了吗?