【问题标题】:How to Cycle Through Links (sequentially) Each Page Load如何循环浏览链接(按顺序)每个页面加载
【发布时间】:2016-10-21 05:16:16
【问题描述】:

我正在尝试循环浏览 5 个链接,并希望在每个页面加载时循环浏览它们(即第一个访问者页面加载显示链接 1,第二个访问者页面加载显示链接 2,等等。然后在链接后返回链接 1 5场)

我在下面找到了这段代码,它会随机循环浏览链接,但我试图让它们按顺序加载。这可能吗?提前感谢您的帮助。

<li id="RotateLink"></li>

<script language="javascript">
var links = new Array("link1", "link2", "link3", "link4", "link5");
var randomnumber=Math.floor(Math.random()*5)
document.getElementById("RotateLink").innerHTML = links[randomnumber];
</script>

(另外,将“link1”更改为实际链接的一些提示也会有所帮助)

【问题讨论】:

    标签: javascript


    【解决方案1】:

    由于您在页面加载时丢失了 JS 上下文,您可以使用浏览器的内置 localStorage api (https://developer.mozilla.org/en-US/docs/Web/API/Storage/LocalStorage)。

    <li id="RotateLink"></li>
    
    <script language="javascript">
      var links = new Array("link1", "link2", "link3", "link4", "link5");
      var numberFromStorage = localStorage.getItem("cycle-link-number") || "0"; // zero if getItem returns null
      var number = parseInt(numberFromStorage); //cast to number since storage saves strings
      number = number >= links.length ? 0 : number; // reset if reached max
      localStorage.setItem("cycle-link-number", number + 1); //set item for next iteration
      document.getElementById("RotateLink").innerHTML = links[number];
    </script>
    

    要创建链接,您可以执行以下操作:

    // instead of
    // document.getElementById("RotateLink").innerHTML = links[number];
    // do
    var link = document.createElement("a"); // creates anchor element
    link.href = 'someUrl'; // sets the url, e.g link.href = 'http://www.google.de';
    link.innerHTML = 'linktext'; // set the link text
    document.getElementById("RotateLink").appendChild(link); // appends the link to the element with the id "RotateLink"
    

    【讨论】:

    • 感谢 Stefan,我刚刚尝试了代码,但它似乎不起作用。我不确定是否需要根据您发送的本地存储链接添加其他内容。
    • 应该可以。你能分享你的实现或任何错误吗?
    • 我刚刚意识到我有一个错字。正在获取链接[随机数]。更新了它。它现在应该可以工作了
    • 我现在只需要将“link1”替换为实际链接,例如&lt;a href="http://mylink.com"&gt;Link 1&lt;/a&gt; 您是否有关于如何轻松做到这一点的快速提示给非Java 人员?一旦我有了它,我就会准备好。再次感谢!
    • 我很高兴你能成功。我的第二个 sn-p 解释了如何通过脚本创建链接。
    【解决方案2】:

    由于您需要知道在页面重新加载后之前加载的链接,您需要将该信息存储在某处,以便您可以在下次重新加载时使用它。我们有浏览器本地存储来做到这一点。您可以存储先前加载的链接的索引,并根据该索引增加链接。有关 HTML5 Web 存储的更多详细信息,请点击此处here

    <li id="RotateLink"></li>
    
    <script language="javascript">
    
    var links = new Array("link1", "link2", "link3", "link4", "link5");
    
    var currentIndex=localStorage.currentIndex;
    if(currentIndex){
       if(currentIndex < links.length-1)
         currentIndex = parseInt(currentIndex)+1;
       else
         currentIndex = 0;
     } else {
         currentIndex = 0;
         localStorage.setItem('currentIndex', currentIndex);
     }
    localStorage.currentIndex = currentIndex;
    document.getElementById("RotateLink").innerHTML = links[currentIndex];
    
    </script>
    

    【讨论】:

    • 谢谢 suzo,我刚刚尝试了代码,但似乎没有用。我不确定是否需要根据您发送的本地存储链接添加其他内容。任何帮助/指导将不胜感激。
    • 我为你做了一个小提琴。检查并告诉我这是否是您所期望的:jsfiddle.net/suzo/yzycajpu
    猜你喜欢
    • 2014-09-23
    • 1970-01-01
    • 1970-01-01
    • 2010-09-10
    • 1970-01-01
    • 1970-01-01
    • 2013-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多