功能警报框

时间:2015-09-09 15:03:50

标签: javascript

该功能运行良好但我不知道为什么我的警报框在点击后不会触发。

<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>

3 个答案:

答案 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");
    }
  }