首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用9 <div>随机生成no (1-9)而不进行修复,

使用9 <div>随机生成no (1-9)而不进行修复,
EN

Stack Overflow用户
提问于 2013-12-21 14:01:34
回答 6查看 102关注 0票数 0

我曾尝试在9 div中生成rnadom数(1-9),如何避免数量的更改?但是它不起作用,为什么我不能得到输出?提前谢谢。这是我的代码:

代码语言:javascript
复制
<html>
<head>
<title>Random_No</title>
<link rel="stylesheet" type="text/css" href="rno.css">
<script src="rno.js" ></script>
</head>

<body class="outer" onload=random()>
<div id="input1" ></div>
<div id="input2" ></div>
<div id="input3" ></div>
<div id="input4" ></div>
<div id="input5" ></div>
<div id="input6" ></div>
<div id="input7" ></div>
<div id="input8" ></div>
<div id="input9" ></div>
<script>
function random()
{
var a=new Array("input1","input2","input3","input4","input5","input6","input7","input8","input9");
x=a.length;
var ran=new Array();
for(var i=0;i<x;i++)
{
   ran[i]=Math.floor(Math.random()*9);
}

for(var i=0 ; i<x ; i++)
{
   document.getElementById("a[i]").innerHTML=ran[i];
}
}
</script>
</body>
</html>
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-12-21 17:51:25

另一种从集合中生成随机画的方法-

代码语言:javascript
复制
<!doctype html>
<html lang="en">
<head>
<meta charset= "utf-8">
<title>Random_No</title>

</head>
<body >
<div id= "input1"></div>
<div id= "input2"></div>
<div id= "input3"></div>
<div id= "input4"></div>
<div id= "input5"></div>
<div id= "input6"></div>
<div id= "input7"></div>
<div id= "input8"></div>
<div id= "input9"></div>
<script>
function random_no(){
    var  i=0, ran=[1,2,3,4,5,6,7,8,9];
    while(i<9){     
        document.getElementById("input"+(++i)).innerHTML= 
        ran.splice(Math.floor(Math.random()*ran.length),1);
    }
}
onload=random_no;
</script>

</body>
</html>
票数 0
EN

Stack Overflow用户

发布于 2013-12-21 14:03:48

替换

代码语言:javascript
复制
document.getElementById("a[i]").innerHTML=ran[i];

通过

代码语言:javascript
复制
document.getElementById(a[i]).innerHTML=ran[i];

还有..。为什么是2圈?

票数 1
EN

Stack Overflow用户

发布于 2013-12-21 14:09:57

因为你只想要一小部分随机的物品,没有重复,并且每一个,一个费舍-耶茨洗牌将是非常有效的这里。

代码语言:javascript
复制
var inputs = [], i;
for (i = 1; i < 10; ++i) // get each input
    inputs.push(document.getElementById('input' + i));

function shuffleArray(a) { // Fisher-Yates shuffle, no side effects
    var i = a.length, t, j;
    a = a.slice();
    while (--i) t = a[i], a[i] = a[j = ~~(Math.random() * (i+1))], a[j] = t;
    return a;
}

inputs = shuffleArray(inputs); // shuffle

for (i = 0; i < 9; ++i) // give values (already shuffled)
    inputs[i] = i + 1;  // there will be no repeats because we're counting up
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20719780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档