【发布时间】:2023-03-14 00:02:01
【问题描述】:
我正在尝试制作一个数组,将其随机播放,然后按顺序遍历它。但是,当我不止一次洗牌(START)时,它就搞砸了!此外,当您到达随机数组中的最后一个数字时,它也会混乱!请帮忙,谢谢!
JS
var minnum = 1;
var maxnum = 104;
function start() {
var nums = [];
while(minnum < maxnum+1){
nums.push(minnum++);
}
function shuffle(o) {
for(var j, x, i = o.length; i; j = parseInt(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
return o;
}
var randomnum = shuffle(nums);
document.getElementById('txt').innerHTML = randomnum;
localStorage["nums"] = JSON.stringify(randomnum);
localStorage.setItem("current", 0);
}
function Link() {
if (localStorage.getItem("current") === null || localStorage.getItem("nums") === null) {
start();
}
var current = localStorage.getItem("current");
var nums = JSON.parse(localStorage["nums"]);
document.getElementById('txt').innerHTML = nums;
document.getElementById('txt1').innerHTML = nums[current];
current++;
if(current > 103) {
location.reload();
start();
current = 0;
}
localStorage.setItem("current", current);
}
HTML
<body>
<input type="button" onclick="start()" value="Start" />
<span id="txt"></span>
<input type="button" onclick="Link()" value="Next" />
<span id="txt1"></span>
</body>
【问题讨论】:
-
“它搞砸了”到底是怎么回事?你得到什么结果或错误,你期望什么?
-
@Andy:不幸的是你在修复时出错了:函数 shuffle 在 inside start 函数中! (我的意思是,在原始代码中)有一个 while 就在那里搞砸了一切
-
在任何情况下,错误可能是 minnum 和 maxnum 被声明在 start 函数之外,所以如果你再次运行它将无法工作,因为 minnum 已经是 103。jsfiddle.net/1pd18eun/1跨度>
-
不@Andy,不是,只是缩进不好!如果您想从小提琴中获取代码,我已经修复了它,但没有错误,只是在 start 函数之外缩进和 minnum 和 maxnum 错误
-
唷擦眉毛。谢谢,@briosheje。
标签: javascript arrays random shuffle