该功能运行良好但我不知道为什么我的警报框在点击后不会触发。
<html>
<script type="text/javascript">
function getRNG(min, max) {
return Math.floor(Math.random() * (max - min + 1) + min);
}
function rollD20() {
document.getElementById("txtNumber").value = getRNG(1, 20);
}
if (txtNumber < 10) {
alert("Failure");
} else {
alert("Success");
}
</script>
<body>
<input type="text" disabled="disabled" size="2" id="txtNumber" />
<div id="output"></div>
<button onclick="rollD20();">Roll</button>
</body>
</html>
答案 0 :(得分:4)
你有一个关闭问题。应该是:
<script type="text/javascript">
function getRNG(min, max) {
return Math.floor(Math.random() * (max - min + 1) + min);
}
function rollD20() {
document.getElementById("txtNumber").value = getRNG(1, 20);
if (txtNumber < 10) {
alert("Failure");
}
else {
alert("Success");
}
}
</script>
更改是将rollD20
函数的结束括号移到if / else语句之下。
另外值得注意的是,我没有看到你设置txtNumber
的任何地方。
也许你的意思是:
function rollD20() {
var txtNumber = getRNG(1, 20);
document.getElementById("txtNumber").value = txtNumber;
if (txtNumber < 10) {
alert("Failure");
}
else {
alert("Success");
}
}
如果是这样,可以进一步减少(如果需要),简单地说:
function rollD20() {
var txtNumber = document.getElementById("txtNumber").value = getRNG(1, 20);
alert(txtNumber < 10 ? "Failure" : "Success");
}
答案 1 :(得分:0)
因为你没有把它放到rollD20
函数中,所以if-else
逻辑只在页面加载时运行一次。要在每次单击时触发它,您必须将它放在click事件处理程序中,如下所示:
<html>
<script type="text/javascript">
function getRNG(min, max) {
return Math.floor(Math.random() * (max - min + 1) + min);
}
function rollD20() {
var txtNumber = document.getElementById("txtNumber").value = getRNG(1, 20);
if (txtNumber < 10) {
alert("Failure");
} else {
alert("Success");
}
}
</script>
<body>
<input type="text" disabled="disabled" size="2" id="txtNumber" />
<div id="output"></div>
<button onclick="rollD20();">Roll</button>
</body>
</html>
另外,我定义了一个名为txtNumber
的变量。
答案 2 :(得分:0)
嗯,if...else
逻辑在函数之外,但您可能也希望将getRND()
的结果存储在变量中:
function rollD20() {
var result = getRNG(1, 20);
document.getElementById("txtNumber").value = result;
if (result < 10) {
alert("Failure");
}
else {
alert("Success");
}
}