javascript - Html 按钮未显示来自案例功能的警报消息

标签 javascript html

我正在尝试使用 case 语句为三个不同的按钮按下提供三个不同的警报

我试过了

<!DOCTYPE html>
<html>
<head>
<script>
function something(){
 var counter = 0;
var button = document.querySelector("#button");

button.addEventListener("click", function() {
counter++;
switch(counter) {
    case 1:
        alert("something");
        break;
    case 2:
        alert("something else");
        break;
    case 3:
        alert("something else else");
        break;
  }
 });
 }

</script>
</head>
<body>
<input id="button" value="enter" type="button">
</body>
</html>

控制台没有错误。该按钮显示在网页上,但未显示警报。

最佳答案

正如 Jaromanda 指出的那样,您需要调用函数并定义它,例如:

function something() {
  var counter = 0;
  var button = document.querySelector("#button");

  button.addEventListener("click", function() {
    counter++;
    switch (counter) {
      case 1:
        alert("something");
        break;
      case 2:
        alert("something else");
        break;
      case 3:
        alert("something else else");
        break;
    }
  });
}
something();
<input id="button" value="enter" type="button">

或者,以这种方式设置代码可能更直观,在函数外部识别按钮和计数器变量,然后在每次调用函数时(在函数内部)递增计数器。

(注意:此版本包括两个附加功能:

1) 如果计数器太高,if 语句会将计数器重置为零,因此每次点击都会产生警报。如果您希望超过第三次的点击什么也不做,只需删除此声明(或将其注释掉)。

2) 在 switch 语句中有一个 default case —— 万一出现问题,我们的代码给计数器一个意外的值,这将帮助我们调试这个问题。)

const button = document.querySelector("#button");
let counter = 0;
button.addEventListener("click", doAlert);

function doAlert(){
  if (counter == 3){ counter = 0; }
  counter++;
  switch (counter) {
    case 1: alert("something"); break;
    case 2: alert("something else"); break;
    case 3: alert("something else else"); break;
    default: alert("this should be impossible"); break;
  }
}
<input id="button" value="Enter" type="button">

关于javascript - Html 按钮未显示来自案例功能的警报消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57847886/

相关文章:

javascript - 类型错误 : 'undefined' is not a constructor - Backbone Model

javascript - 你能把图像映射放在图像映射中吗? (JavaScript)?

css - 通过 CSS 调整图像大小时,文本显示在图像上

html - 位置 :fixed navigation header overlapping browser scroll bar when using overflow-x

javascript - 有效地从 DOM 中删除项目

javascript - 根据今天的日期减去或加上一行中的特定天数获取新日期

javascript - d3v4 - 缩放(相当于 d3.zoom.x)

javascript - 通过更多项目获取元素

html - 如何创建具有不同标题的多个 html 有序列表(已编辑)

javascript - 内容滚动 javascript 错误,当到达页面点时内容继续向上滚动