Javascript-洗牌数组无法正常工作。需要帮助
下面的洗牌功能无法正常工作。我有一个100多页的数组,需要洗牌,然后在iframe中显示一段时间。不知何故,它没有显示100多页的整个数组,但大约25页之后,它似乎又重新开始了。有人能帮忙吗?我需要确保整个阵列始终以完整的方式播放,并且始终以新的随机顺序播放,以便在每次访问页面时进行洗牌,并在播放整个阵列后进行洗牌 这是代码,有人能看到哪里出了问题吗Javascript-洗牌数组无法正常工作。需要帮助,javascript,arrays,iframe,shuffle,Javascript,Arrays,Iframe,Shuffle,下面的洗牌功能无法正常工作。我有一个100多页的数组,需要洗牌,然后在iframe中显示一段时间。不知何故,它没有显示100多页的整个数组,但大约25页之后,它似乎又重新开始了。有人能帮忙吗?我需要确保整个阵列始终以完整的方式播放,并且始终以新的随机顺序播放,以便在每次访问页面时进行洗牌,并在播放整个阵列后进行洗牌 这是代码,有人能看到哪里出了问题吗 <script type="text/javascript"> var pages=new Array(); pages[0]="01
<script type="text/javascript">
var pages=new Array();
pages[0]="01.html";
pages[1]="02.html";
pages[2]="03.html";
....etc
pages[100] ="100.html";
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;
}
var time=33000;
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="1555px" height="872px" hspace="0" vspace="0" frameborder="2" scrolling="no" ></iframe><br />
编辑:工作代码:
var pages=[];
pages[0]="http://example.com/";
pages[1]="http://www.iana.org/domains/reserved";
pages[2]="http://en.wikipedia.org/wiki/Main_Page";
pages[3]="http://en.wikipedia.org/wiki/Randomness";
var shuffle = function(array){
var shuffledPages = [];
while(array.length){
shuffledPages.push(array.splice(Math.floor(array.length*Math.random()),1));
}
return shuffledPages;
}
var time = 3300;
var currentIndex = 0;
function pageChange() {
if(currentIndex == 0){
pages = shuffle(pages);
console.log(pages);
currentIndex = pages.length;
}
currentIndex--;
document.getElementById("frame").src=pages[currentIndex];
console.log(currentIndex);
setTimeout(function() { pageChange(); }, time);
};
pageChange();
小提琴手:使用此方法洗牌。我将如何在代码中实现这一点?我不知道如何结合洗牌和换页功能。谢谢。我用你的代码替换了我的洗牌部分,但是现在iframe中什么也没有发生。是的!在小提琴中,它工作得很好,但在我自己的代码中,我需要更改页面更改;到onload=页面更改;为了让它甚至开始,当它开始时,第一个页面总是一个错误/不存在的页面。从第二页看,它似乎在玩洗牌…我在小提琴中看到,它在每个数组中也捕捉到404。我清楚地看到错误404,我们真的很抱歉,但没有这样的页面。在第一个页面上加载,并且每下一次洗牌一次。我认为数学在数组零下一->引用页面[-1]之外创建了一个值,这个值不存在。它只是在你这边的一个无序循环中播放4页吗?现在呢?我发现第一个值总是4作为数组长度,所以这个版本应该可以工作。