这是我提出的,但它不起作用。我没有得到输出。
Javascript.js
function randomnamegen() {
var names = ["Mango", "Pul", "Bat", "Tim", "Mh", "Hei"];
var namein = names(Math.floor((Math.random() * 5) + 0));
document.getElementById("name").innerHTML = namein;
}
的index.html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Cherry Cheese Danish</title>
</head>
<body>
<button type="button" onclick="randomnamegen()">Click Me!</button>
<p id="name"></p>
<script src="JavaScript.js"></script>
</body>
</html>
我得到一个未捕获的TypeError:对象不是谷歌Chrome控制台中的JavaScript.js:3函数。
答案 0 :(得分:1)
对阵列使用[]
方括号:
var namein = names[ Math.floor((Math.random() * 5) + 0) ];
而不是严格使用5
(当你有6个)时,你可以让JS做点算:
Math.random() * names.length
function randomnamegen() {
var names = ["Mango", "Pul", "Bat", "Tim", "Mh", "Hei"];
var namein = names[ Math.floor(Math.random() * names.length) ];
document.getElementById("name").innerHTML = namein;
}
<button type="button" onclick="randomnamegen()">Click Me!</button>
<p id="name"></p>
答案 1 :(得分:0)
您的代码运行良好。你必须在[]中用[]改变()
var namein = names(Math.floor((Math.random() * 5) + 0));
正确的是:
var namein = names[Math.floor((Math.random() * 5) + 0)];
控制台发出以下错误:“对象不是函数”。
点击此链接jsfiddle查看一个有效的示例。
希望它有用!
答案 2 :(得分:0)
var namein = names[Math.floor(Math.random() * 5)];
或使用^ 0
进行舍入
var namein = names[Math.random() * 5 ^ 0];
答案 3 :(得分:0)
这是一个旨在改组数组的Fisher-Yates实现。
function shuffle(array) {
var currentIndex = array.length,
temporaryValue,
randomIndex;
while (0 !== currentIndex) {
randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex -= 1;
temporaryValue = array[currentIndex];
array[currentIndex] = array[randomIndex];
array[randomIndex] = temporaryValue;
}
return array;
}
在对阵列进行洗牌后,您可以检索如下值:
var array = [1, 2, 3, 4, 5];
function retrieve() {
return shuffle(array)[0];
}
如果您不想重复您的商品:
var array = [1, 2, 3, 4, 5],
temp = [];
function retrieve() {
if(temp.length > 0) {
return temp.pop();
} else {
temp = shuffle(array.slice());
return temp.pop();
}
}
不确定这是否是最佳答案。
function shuffle(array) {
var currentIndex = array.length,
temporaryValue,
randomIndex;
while (0 !== currentIndex) {
randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex -= 1;
temporaryValue = array[currentIndex];
array[currentIndex] = array[randomIndex];
array[randomIndex] = temporaryValue;
}
return array;
}
var array = ["Mango", "Pul", "Bat", "Tim", "Mh", "Hei"];
function retrieve() {
document.getElementById("name").innerHTML = shuffle(array)[0];
}
&#13;
<button type="button" onclick="retrieve()">Click Me!</button>
<p id="name"></p>
&#13;