Javascript-从数组中选择随机页面,但不要将页面显示两次
我有一段代码,它从包含X数量URL的数组中随机选择一个页面,在iframe中显示X数量的时间,并永远重复这个过程:Javascript-从数组中选择随机页面,但不要将页面显示两次,javascript,arrays,iframe,random,Javascript,Arrays,Iframe,Random,我有一段代码,它从包含X数量URL的数组中随机选择一个页面,在iframe中显示X数量的时间,并永远重复这个过程: <script type="text/javascript"> var pages=new Array(); pages[0]="01.html"; pages[1]="02.html"; pages[2]="03.html"; pages[3]="04.html"; pages[4]="05.html"; pages[5]="06.html"; pages[6]="0
<script type="text/javascript">
var pages=new Array();
pages[0]="01.html";
pages[1]="02.html";
pages[2]="03.html";
pages[3]="04.html";
pages[4]="05.html";
pages[5]="06.html";
pages[6]="07.html";
pages[7]="08.html";
pages[8]="09.html";
pages[9]="10.html";
pages[x]="etc.html";
var time=33000; // this is set in milliseconds
function pageChange() {
var rand=Math.floor(Math.random()*pages.length);
document.getElementById("frame").src=pages[rand];
setTimeout("pageChange()",time);
}
onload=pageChange;
</script>
<iframe id="frame" src="" width="870px" height="488px" hspace="0" vspace="0" frameborder="1" scrolling="no" ></iframe>
var pages=新数组();
页面[0]=“01.html”;
页面[1]=“02.html”;
页面[2]=“03.html”;
页面[3]=“04.html”;
第[4]页=“05.html”;
页面[5]=“06.html”;
页面[6]=“07.html”;
页面[7]=“08.html”;
页面[8]=“09.html”;
页面[9]=“10.html”;
页面[x]=“etc.html”;
var时间=33000;//这是以毫秒为单位设置的
函数pageChange(){
var rand=Math.floor(Math.random()*pages.length);
document.getElementById(“frame”).src=pages[rand];
设置超时(“页面更改()”,时间);
}
onload=页面更改;
现在,我希望它选择一个随机页面,但在显示页面后,在整个数组循环之前,它不会再次显示。基本上就像从一副牌中盲目地抽牌,直到所有的牌都被抽到一次为止,洗牌然后一次又一次地抽
有人知道上面的代码是如何实现的吗?如有任何帮助或建议,将不胜感激
[编辑:]
从下面输入后,代码如下所示:
<script type="text/javascript">
var pages=new Array();
pages[0]="01.html";
pages[1]="02.html";
pages[2]="03.html";
pages[3]="04.html";
var shuffle = function(){
var shuffledPages = [];
while(pages.length > 0){
shuffledPages.push( pages.splice(Math.floor( pages.length * Math.random() ), 1)[0] );
}
return shuffledPages;
}
var time=10000;
var currentIndex = 0;
function pageChange() {
if(currentIndex == pages.length - 1){
pages = shuffle();
currentIndex = 0;
}
else{
currentIndex++;
}
document.getElementById("frame").src=pages[currentIndex];
setTimeout("pageChange()",time);
}
onload=pages = shuffle();
onload=pageChange;
</script>
<iframe id="frame" src="" width="870px" height="488px" hspace="0" vspace="0" frameborder="1" scrolling="no" ></iframe>
pages = shuffle();
var pages=新数组();
页面[0]=“01.html”;
页面[1]=“02.html”;
页面[2]=“03.html”;
页面[3]=“04.html”;
var shuffle=函数(){
var shuffledPages=[];
while(pages.length>0){
shuffledPages.push(pages.splice(Math.floor(pages.length*Math.random()),1)[0]);
}
返回洗牌页面;
}
var时间=10000;
var currentIndex=0;
函数pageChange(){
如果(currentIndex==pages.length-1){
pages=shuffle();
currentIndex=0;
}
否则{
currentIndex++;
}
document.getElementById(“frame”).src=pages[currentIndex];
设置超时(“页面更改()”,时间);
}
onload=pages=shuffle();
onload=页面更改;
这似乎起到了作用,但序列中发生了一些奇怪的事情。我注意到显示的4个序列:[1,2,3,4][2,1,2,1][4,3,1,2][4,2,4,3][1,3,4,2][1,1,2,3][4,2,3,1][4,4,1,1,2]。创建一个洗牌函数,遍历数组,当到达数组末尾时,再次洗牌页面
var shuffle = function(){
var shuffledPages = [];
/*The first time rand is used, it will not allow you to pick the last value used last time.*/
var rand = Math.floor((pages.length - 1) * Math.random());
while(pages.length > 0){
shuffledPages.push( pages.splice( rand , 1)[0] );
rand = Math.floor(pages.length * Math.random());
}
return shuffledPages;
}
你可以这样称呼它:
<script type="text/javascript">
var pages=new Array();
pages[0]="01.html";
pages[1]="02.html";
pages[2]="03.html";
pages[3]="04.html";
var shuffle = function(){
var shuffledPages = [];
while(pages.length > 0){
shuffledPages.push( pages.splice(Math.floor( pages.length * Math.random() ), 1)[0] );
}
return shuffledPages;
}
var time=10000;
var currentIndex = 0;
function pageChange() {
if(currentIndex == pages.length - 1){
pages = shuffle();
currentIndex = 0;
}
else{
currentIndex++;
}
document.getElementById("frame").src=pages[currentIndex];
setTimeout("pageChange()",time);
}
onload=pages = shuffle();
onload=pageChange;
</script>
<iframe id="frame" src="" width="870px" height="488px" hspace="0" vspace="0" frameborder="1" scrolling="no" ></iframe>
pages = shuffle();
因此,您可以编写代码的其余部分:
var time=33000;
var currentIndex = 0;
var lastValue = null;
var pageChange = function() {
if(currentIndex == pages.length - 1){
pages = shuffle();
currentIndex = 0;
}
else{
currentIndex++;
}
document.getElementById("frame").src=pages[currentIndex];
setTimeout("pageChange()",time);
}
pageChange();
创建一个洗牌函数,遍历数组,当到达数组末尾时,再次洗牌页面
var shuffle = function(){
var shuffledPages = [];
/*The first time rand is used, it will not allow you to pick the last value used last time.*/
var rand = Math.floor((pages.length - 1) * Math.random());
while(pages.length > 0){
shuffledPages.push( pages.splice( rand , 1)[0] );
rand = Math.floor(pages.length * Math.random());
}
return shuffledPages;
}
你可以这样称呼它:
<script type="text/javascript">
var pages=new Array();
pages[0]="01.html";
pages[1]="02.html";
pages[2]="03.html";
pages[3]="04.html";
var shuffle = function(){
var shuffledPages = [];
while(pages.length > 0){
shuffledPages.push( pages.splice(Math.floor( pages.length * Math.random() ), 1)[0] );
}
return shuffledPages;
}
var time=10000;
var currentIndex = 0;
function pageChange() {
if(currentIndex == pages.length - 1){
pages = shuffle();
currentIndex = 0;
}
else{
currentIndex++;
}
document.getElementById("frame").src=pages[currentIndex];
setTimeout("pageChange()",time);
}
onload=pages = shuffle();
onload=pageChange;
</script>
<iframe id="frame" src="" width="870px" height="488px" hspace="0" vspace="0" frameborder="1" scrolling="no" ></iframe>
pages = shuffle();
因此,您可以编写代码的其余部分:
var time=33000;
var currentIndex = 0;
var lastValue = null;
var pageChange = function() {
if(currentIndex == pages.length - 1){
pages = shuffle();
currentIndex = 0;
}
else{
currentIndex++;
}
document.getElementById("frame").src=pages[currentIndex];
setTimeout("pageChange()",time);
}
pageChange();
创建一个洗牌函数,遍历数组,当到达数组末尾时,再次洗牌页面
var shuffle = function(){
var shuffledPages = [];
/*The first time rand is used, it will not allow you to pick the last value used last time.*/
var rand = Math.floor((pages.length - 1) * Math.random());
while(pages.length > 0){
shuffledPages.push( pages.splice( rand , 1)[0] );
rand = Math.floor(pages.length * Math.random());
}
return shuffledPages;
}
你可以这样称呼它:
<script type="text/javascript">
var pages=new Array();
pages[0]="01.html";
pages[1]="02.html";
pages[2]="03.html";
pages[3]="04.html";
var shuffle = function(){
var shuffledPages = [];
while(pages.length > 0){
shuffledPages.push( pages.splice(Math.floor( pages.length * Math.random() ), 1)[0] );
}
return shuffledPages;
}
var time=10000;
var currentIndex = 0;
function pageChange() {
if(currentIndex == pages.length - 1){
pages = shuffle();
currentIndex = 0;
}
else{
currentIndex++;
}
document.getElementById("frame").src=pages[currentIndex];
setTimeout("pageChange()",time);
}
onload=pages = shuffle();
onload=pageChange;
</script>
<iframe id="frame" src="" width="870px" height="488px" hspace="0" vspace="0" frameborder="1" scrolling="no" ></iframe>
pages = shuffle();
因此,您可以编写代码的其余部分:
var time=33000;
var currentIndex = 0;
var lastValue = null;
var pageChange = function() {
if(currentIndex == pages.length - 1){
pages = shuffle();
currentIndex = 0;
}
else{
currentIndex++;
}
document.getElementById("frame").src=pages[currentIndex];
setTimeout("pageChange()",time);
}
pageChange();
创建一个洗牌函数,遍历数组,当到达数组末尾时,再次洗牌页面
var shuffle = function(){
var shuffledPages = [];
/*The first time rand is used, it will not allow you to pick the last value used last time.*/
var rand = Math.floor((pages.length - 1) * Math.random());
while(pages.length > 0){
shuffledPages.push( pages.splice( rand , 1)[0] );
rand = Math.floor(pages.length * Math.random());
}
return shuffledPages;
}
你可以这样称呼它:
<script type="text/javascript">
var pages=new Array();
pages[0]="01.html";
pages[1]="02.html";
pages[2]="03.html";
pages[3]="04.html";
var shuffle = function(){
var shuffledPages = [];
while(pages.length > 0){
shuffledPages.push( pages.splice(Math.floor( pages.length * Math.random() ), 1)[0] );
}
return shuffledPages;
}
var time=10000;
var currentIndex = 0;
function pageChange() {
if(currentIndex == pages.length - 1){
pages = shuffle();
currentIndex = 0;
}
else{
currentIndex++;
}
document.getElementById("frame").src=pages[currentIndex];
setTimeout("pageChange()",time);
}
onload=pages = shuffle();
onload=pageChange;
</script>
<iframe id="frame" src="" width="870px" height="488px" hspace="0" vspace="0" frameborder="1" scrolling="no" ></iframe>
pages = shuffle();
因此,您可以编写代码的其余部分:
var time=33000;
var currentIndex = 0;
var lastValue = null;
var pageChange = function() {
if(currentIndex == pages.length - 1){
pages = shuffle();
currentIndex = 0;
}
else{
currentIndex++;
}
document.getElementById("frame").src=pages[currentIndex];
setTimeout("pageChange()",time);
}
pageChange();
如果不想保留整个数组,可以使用splice()删除已从数组中选择的元素
pages.splice(rand, 1);
这将从数组中删除所选页面
pages.splice(rand, 1);
如果要保留整个阵列,可以创建“备份”阵列。如果不想保留整个阵列,可以使用splice()删除已从阵列中选择的元素
pages.splice(rand, 1);
这将从数组中删除所选页面
pages.splice(rand, 1);
如果要保留整个阵列,可以创建“备份”阵列。如果不想保留整个阵列,可以使用splice()删除已从阵列中选择的元素
pages.splice(rand, 1);
这将从数组中删除所选页面
pages.splice(rand, 1);
如果要保留整个阵列,可以创建“备份”阵列。如果不想保留整个阵列,可以使用splice()删除已从阵列中选择的元素
pages.splice(rand, 1);
这将从数组中删除所选页面
pages.splice(rand, 1);
如果要保留整个阵列,可以创建“备份”阵列。谢谢。我想保留数组,因为它必须在完成一个完整的循环后重新开始。您能告诉我如何编写“备份”数组吗?将整个数组复制到另一个变量,然后在重新启动之前,将其复制回您处理的那个变量。祝你好运,谢谢。我想保留数组,因为它必须在完成一个完整的循环后重新开始。您能告诉我如何编写“备份”数组吗?将整个数组复制到另一个变量,然后在重新启动之前,将其复制回您处理的那个变量。祝你好运,谢谢。我想保留数组,因为它必须在完成一个完整的循环后重新开始。您能告诉我如何编写“备份”数组吗?将整个数组复制到另一个变量,然后在重新启动之前,将其复制回您处理的那个变量。祝你好运,谢谢。我想保留数组,因为它必须在完成一个完整的循环后重新开始。您能告诉我如何编写“备份”数组吗?将整个数组复制到另一个变量,然后在重新启动之前,将其复制回您处理的那个变量。祝你好运。评论不是用来讨论的;这段对话已经结束了。好的,多亏了你的大力投入,它现在运行得非常好。我有一个后续问题:是否可以创建pauze/continue函数,以便在鼠标单击(按钮)后冻结并显示1个页面,直到用户再次单击并继续页面更改功能?设置
val paused=false
,有一个onclick事件将其更改为true,您可以在设置超时if(暂停)之前检查{..}
。然后单击继续,单击页面更改()再次。如果您还有任何问题,请创建一个新问题!评论不用于扩展讨论;此对话已经结束。好的,由于您的出色输入,现在它运行得非常好。我有一个后续问题:是否可以创建pauze/continue函数,所以在鼠标单击(按钮)1后