如上所述。以下是我尝试使用的代码类型的示例:
http://codepen.io/anon/pen/LGLJXd
<button id='myButt' onclick='randGen()'>New Target</button>
<button id="myOtherButt" onclick='clear()'>Clear</button>
<p id='test'>Click me to randomly choose from the array!</p>
然后JS;
var myArray = ["Empire", "Rebels", "Scum", "Clones", "Trade Federation", "Sith", "Jedi"];
var rand = myArray[Math.floor(Math.random() * myArray.length)];
function randGen() {
document.getElementById('test').innerHTML = rand;
};
function clear() {
document.getElementById('test').innerHTML = 'No';
};
它运行良好一次,但“清除”或尝试不止一次使用“第一个”按钮无响应。有人能帮我理解我做得不对吗?
答案 0 :(得分:4)
您在页面加载时已经生成了一次随机数,并且它永远不会更改。为了更改它,您需要在点击时再次生成它:
var myArray = ["Empire", "Rebels", "Scum", "Clones", "Trade Federation", "Sith", "Jedi"];
function randGen() {
var rand = myArray[Math.floor(Math.random() * myArray.length)];
document.getElementById('test').innerHTML = rand;
};
答案 1 :(得分:2)
您正在调用rand
,它只是一次生成的变量。
如果你想获得另一个随机项,你应该使用一个返回结果的函数:
function rand() {
var myArray = ["Empire", "Rebels", "Scum", "Clones", "Trade Federation", "Sith", "Jedi"];
return myArray[Math.floor(Math.random() * myArray.length)];
}
function randGen() {
document.getElementById('test').innerHTML = rand();
};
function clear() {
document.getElementById('test').innerHTML = 'No';
};
答案 2 :(得分:0)
这里的问题是你只在开头初始化属性“rand”。因此,每次调用函数“randGen()”时,“rand”属性都使用相同的值。
要始终获得新值,您还必须将rand设置为新值。
解决方案很简单:
function randGen() {
// get a new value
var rand = myArray[Math.floor(Math.random() * myArray.length)];
// set the value
document.getElementById('test').innerHTML = rand;
};