javascript - 如何使按钮在第一次点击事件结束之前不会对多次点击做出反应
问题描述
我做了一个时钟并对其进行编码,以使时钟根据讲师的要求每季度报时。但是有一个问题,当我多次点击时,时钟会一次又一次地报时,直到报时的次数等于点击的次数。我想也许我可以让按钮只工作一次。我在 html 中做到了:<input= id="talkBTN" type="submit" value="Tell the time!" onclick=this.disabled>
但这种方式并不能彻底解决问题,因为它只是禁止我使用按钮。
这是“告诉时间”的编码。我想我应该使用 addEventListener 和 removeEventListener。
function tellTime(){
let currentTime = new Date();
timeWords.push("timeis");
numToWords(currentTime.getHours());
numToWords(currentTime.getMinutes());
console.log(timeWords);
timeTeller.addEventListener("ended", sayWords);
sayWords();
}
function sayWords(){
if (timeWords.length > 0) {
timeTeller.src = soundURL + timeWords[0] + ".mp3";
timeTeller.play();
timeWords.shift();
} else {
timeTeller.removeEventListener("ended", sayWords);
}
}
function numToWords(value){
if(value <= 20){
timeWords.push(value);
} else {
let tens = Math.floor(value / 10);
timeWords.push(tens * 10);
if (value%10 != 0) {
timeWords.push(value%10);
}
}
}
解决方案
推荐阅读
- android - Android 上的 PyQt5 和 QtWebView
- javascript - 将保存为 TEXT 的 html 保存到数据库并发送回浏览器?
- apache - Plesk Config Apache with a Domain.tld/site
- angular - Adding method to RxJs 6 Subscription prototype
- c++ - 让 C++ 在 Win10 上运行
- javascript - 如何使用 styled-components 设置材质 ui 抽屉组件的背景颜色?
- c# - 过滤器优化的数据分组算法
- android - How to populate a ListView based on the action in previous activity?
- javascript - setState 意外更新非状态属性
- angular - 我们可以用 Angular 5 GUI 打包 spring-boot 2.0 后端吗?