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>