Javascript 如何在每次其他人重新加载页面时打开新链接?

Javascript 如何在每次其他人重新加载页面时打开新链接?,javascript,jquery,html,Javascript,Jquery,Html,我试图打开构建一个系统,在每次单击锚定标记时打开一个新链接。我尝试使用随机函数,但有时它会一次又一次地打开相同的链接。但鉴于我希望链接按顺序打开并遵循循环。。也就是说,如果我有三个链接,第一次单击锚文本的用户将打开第一个链接,然后是第二个,然后是第三个,然后是第一个链接 这意味着如果其他用户单击,链接必须更改 这是我发现的一个使用随机函数的代码 <script type="text/javascript'> function random_3(){ var myrandom=

我试图打开构建一个系统,在每次单击锚定标记时打开一个新链接。我尝试使用随机函数,但有时它会一次又一次地打开相同的链接。但鉴于我希望链接按顺序打开并遵循循环。。也就是说,如果我有三个链接,第一次单击锚文本的用户将打开第一个链接,然后是第二个,然后是第三个,然后是第一个链接

这意味着如果其他用户单击,链接必须更改

这是我发现的一个使用随机函数的代码

<script type="text/javascript'>
function random_3(){
    var myrandom=Math.round(Math.random()*2)
    var link1="http://www.codingforums.com"
    var link2="http://www.cssdrive.com"
    var link3="http://www.dynamicdrive.com"
    if (myrandom==0)
        window.location=link1
    else if (myrandom==1)
        window.location=link2
    else if (myrandom==2)
        window.location=link3
}
</script>
<form>
<input type="button" value="random link!" onClick="random_3()">
</form>

我尝试使用随机函数,但有时它会一次又一次地打开相同的链接

由于所使用的随机计算,您可能会连续多次获得相同的链接。 请尝试以下操作:

var myrandom=Math.floor(Math.random()*3);
这样你应该得到更好的分配

现在,关于您最初的问题,如果您希望在页面重新加载之间保持持久状态,以便每次链接都不同,那么您可能需要使用cookie或localStorage来存储该用户上次使用的索引

例如:

var links = ['http://www.codingforums.com', 'http://www.cssdrive.com', 'http://www.dynamicdrive.com'];
function nextLink() {
 var index = localStorage.getItem('lastPos') || -1;
 index = (index + 1) % links.length;
 localStorage.setItem('lastPos', index);
 return links[index];
}

首先,你必须在一个数组中列出你的链接。其次,必须定义一个变量,该变量保存该数组中最后打开的链接的索引,以避免连续打开同一链接(实际上是URL)。通常,您可以遵循以下代码:

urls = ['http://domain1.com','http://domain2.com', 'http://domain3.com', 'http://domain4.com'];
var lastUrl = '';
function getRandomIndex(arr){  
  return Math.floor(Math.random() * ((arr.length+1) - 1));
}
function openUrl(){
  url = urls[getRandomIndex(urls)]; 
  do {
      if (url == lastUrl){
        url = urls[getRandomIndex(urls)];
      }
    else{
        lastUrl = url;
        //Using alert instead of window.location for testing
        alert(url)
        //window.location = url;       
    }
  }
  while (lastUrl != url);
  
}
然后进行测试:

<a href="javascript:openUrl()">Click here for test</a>

您需要做的是保存链接的索引,然后每次增加索引,以便按顺序循环浏览链接

以下是您想要的工作示例:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
<script>
  urls = ['http://domain1.com','http://domain2.com', 'http://domain3.com', 'http://domain4.com'];
  var urlIndex = 0;

function openUrl(){
  url = urls[urlIndex % urls.length];
  window.location = url;
  urlIndex ++;
}
  </script>
  <a href="javascript:openUrl()">Get a link</a>
</body>
</html>

JS-Bin
URL=['http://domain1.com','http://domain2.com', 'http://domain3.com', 'http://domain4.com'];
var-urlIndex=0;
函数openUrl(){
url=url[urlIndex%url.length];
window.location=url;
URLDINDEX++;
}

您可以像用户单击按钮一样计算单击次数,并在此基础上进行管理。

var myrandom=0;
函数随机_3(){
myrandom+=1;
var link1=”http://www.codingforums.com";
var link2=”http://www.cssdrive.com";
var link3=”http://www.dynamicdrive.com";
如果(myrandom==1)
打开窗户http://www.codingforums.com","空白",;
else if(myrandom==2)
打开窗户http://www.cssdrive.com","空白",;
else if(myrandom==3)
打开窗户http://www.dynamicdrive.com","空白",;
否则如果(myrandom>3)
打开窗户http://www.codingforums.com","空白",;
}


我希望在每次重新加载后打开链接page@PatriciaMoore已经对您的查询进行了编辑。哦,很抱歉误解了,所以您必须使用cookies存储
lastUrl
的值。对不起,可能我以前不清楚。例如,如果有3个用户访问我的网站。然后,当用户1单击此链接时,他转到链接1,类似地,用户2转到链接2,用户3转到链接3,然后第四个用户来点击链接。他再次转到链接1,依此类推。如果我没有错,上述代码将适用于同一个用户。“用户1点击此链接,他转到链接1,类似地,用户2转到链接2,用户3转到链接3”这只能在服务器端完成。排除并发问题。没有客户端解决方案是可能的。
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
<script>
  urls = ['http://domain1.com','http://domain2.com', 'http://domain3.com', 'http://domain4.com'];
  var urlIndex = 0;

function openUrl(){
  url = urls[urlIndex % urls.length];
  window.location = url;
  urlIndex ++;
}
  </script>
  <a href="javascript:openUrl()">Get a link</a>
</body>
</html>