Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-从数组中选择随机页面,但不要将页面显示两次_Javascript_Arrays_Iframe_Random - Fatal编程技术网

Javascript-从数组中选择随机页面,但不要将页面显示两次

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

我有一段代码,它从包含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]="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后