javascript - 每次出现错误时如何更改点击功能
问题描述
我想第一次单击以使 getNumberBtn 成为 getNumberBtnn,第二次单击以使其返回 getNumberBtn 函数。当我单击时,该函数运行但不会更改 onclick 属性
var equation = 0;
function getNumberBtn() {
document.getElementById("apply").onclick = getNumberBtnn();
equation = equation + x;
}
function getNumberBtnn() {
document.getElementById("apply").onclick = getNumberBtn();
equation = equation + x;
}
<div>
<input type="number" id="number" min="1" max="1000">
<button id="apply" onclick=getNumberBtn()>Apply</button>
</div>
解决方案
您不分配事件处理程序,而是分配函数的结果。
正如我在评论中所说,从您分配的函数末尾删除 ()。
你也没有分配任何东西给x
但是我建议你这样做:
- 使用事件监听器
- 使用函数来决定调用哪个函数
- 拥有对象中的函数列表
- 其实有不同的功能
let equation = 0;
const funcs = {
"btn": function(x) {
equation += x; // for example
console.log("btn", equation)
},
"btnn": function(x) {
equation *= x; // for example
console.log("btnn", equation)
}
}
document.getElementById("apply").addEventListener("click", function(e) {
const tgt = e.target;
const func = tgt.dataset.func
tgt.dataset.func = func === "btn" ? "btnn" : "btn"; // toggle the function
funcs[func](+document.getElementById("number").value); // call the chose function with a value
})
<div>
<input type="number" id="number" min="1" max="1000">
<button type="button" data-func="btn" id="apply">Apply</button>
</div>
推荐阅读
- azure - 从 azure key Vault 访问多个密钥作为数据源
- ios - 60 fps的视频录制问题,即使它能够快速
- laravel - 如何获取 ID 然后编辑数据表中的数据
- bixby - 在 Bixby 对话框中给出复数的问题
- mysql - Nodemailer 发送包含 MySQL 数据库信息的电子邮件
- automation - 如何在 Automation Anywhere 中使用 JavaScript 操作 DOM?
- flutter - 便携式POS系统POS型号:TC-TOUCH-T2 Flutter
- python - 如何从列表中删除符号然后放回去?
- html - FireFox 上的自定义搜索取消按钮
- python - 如何根据python中的其他列值创建另一列?