HTML onclick只能使用JavaScript一次

时间:2016-01-12 13:14:35

标签: javascript html onclick

如上所述。以下是我尝试使用的代码类型的示例:

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';
};

它运行良好一次,但“清除”或尝试不止一次使用“第一个”按钮无响应。有人能帮我理解我做得不对吗?

3 个答案:

答案 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”属性都使用相同的值。

要始终获得新值,您还必须将r​​and设置为新值。

解决方案很简单:

function randGen() {
  // get a new value
  var rand = myArray[Math.floor(Math.random() * myArray.length)];

  // set the value
  document.getElementById('test').innerHTML = rand;
};