javascript - Html 按钮没有出现来自案例功能的警报消息
问题描述
我正在尝试使用案例语句为三个不同的按钮按下提供三个不同的警报
我努力了
<!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) default
switch 语句中有一个案例——如果出现问题并且我们的代码为计数器提供了意外的值,这将有助于我们调试该问题。)
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">
推荐阅读
- r - 是否有在 R 包中实现插件系统的官方方法?
- python - Python - 找到特定字符串时拆分文本文件的内容
- javascript - ElementNotInteractableException:使用 Selenium 和 Python 在 td 元素中设置值时出错
- javascript - 如何使用 Jquery 获得页面总高度的 1/3 并显示按钮?
- php - 使用 NGINX 和 laravel 进行动态子域路由
- laravel - 用户登录时 laravel 广播/auth 403(禁止)
- sql - 列出表中第三个值为空的表中的所有名称
- sql - EF Core,一对一关系 - 如何防止覆盖现有关系?
- r - 来自时间序列分析 Springer 书中的状态空间模型代码,以及来自优化的代码错误
- java - 使用带有 actionlistener 的 dispose 函数关闭 JFrame