带有 if 语句的 JavaScript for 循环只检查第一个变量

标签 javascript html

我正在尝试使用 HTML 和 JavaScript 创建一个预订系统。这是我的代码的简化版本,它应该检查所选时间是否与预订数组中的任何变量匹配。

循环正在运行(当我将 if 语句替换为 console.log(bookings[i]); 时它会运行)。

<html>

<head></head>

<body>
  <input type="time" name="time" id="time">
  <button id="submit" class="button">Submit</button>
  <script>
    var bookings = ["10:00", "10:15", "10:30"];

    function addBooking() {
      for (i = 0; i < bookings.length; i++) {
        if (bookings[i] == document.getElementById("time").value) {
          alert("Time unavailable.");
        } else {
          alert("Booking succesful.");
        }
        break;
      }
    }
    document.getElementById("submit").addEventListener("click", addBooking);
  </script>
</body>

</html>

提交表单时,该函数仅检查第一个变量(如果我输入 10:00,它会提醒时间不可用,但如果我输入 10:15 或 10:30,它会提醒“预订成功”)如果输入与 bookings 数组中的任何变量匹配,则应警告“时间不可用”。 编辑:删除中断不能解决问题。

最佳答案

因为您总是在第一次检查后break!所以你只是将第一个值与输入进行比较,你也不必明确地循环这些值,在你的情况下你可以只用一个 if 语句来做,就像这样

if (bookings.indexOf(document.getElementById("time").value) === -1) {
    alert("Booking succesful.");
} else {
    alert("Time unavailable.");
}

关于带有 if 语句的 JavaScript for 循环只检查第一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56415131/

相关文章:

javascript - 即使用户已登录,环回也会抛出 accessToken undefined

javascript - Angular.js : How do I make my radio button selected on load?

html - 将 HTML 代码作为输入的 Angular 组件

javascript - 有没有正常的解决方案来编辑​​列表 Aerospike 中的 map

javascript - OnKeyDown 不适用于 IE9,但适用于所有其他浏览器

Javascript - 电子邮件验证不起作用

javascript - 无法将 jquery "on click"与 bootstrap carousel 一起使用

html - Owl Carousel 2 使用 Bootstrap 4 显示不正确的宽度

html - 丰富的片段重复 - 有害吗?

javascript - navigationControl、mapTypeControl 和 scaleControl 位于 map 后面