javascript - 如何创建一个带有传递参数的加号和减号按钮的计数器,这样我就不会同时使用两个单独的函数?

标签 javascript

我创建了一个带有加号和减号按钮的计数器。计数器工作正常,但我想通过向我的函数传递一个参数来简化我的代码,该函数根据单击哪个按钮执行加减计算。目前我有两个单独的函数来执行此操作,但我想传递“结果”变量,因为这是告诉我的脚本我是要加 1 还是减 1 的部分,但是我不确定如何执行此操作?

我在下面附上了我的 JavaScript,以展示我目前所拥有的。

document.getElementById('minus').onclick = function() {
    var counter = document.getElementById('counter').innerHTML;
    var parsed = parseInt(counter);
    var result = parsed -1;
    document.getElementById('counter').innerHTML = result;
}

document.getElementById('plus').onclick = function() {
    var counter = document.getElementById('counter').innerHTML;
    var parsed = parseInt(counter);
    var result = parsed +1;
    document.getElementById('counter').innerHTML = result;
}

最佳答案

您可以创建一个柯里化(Currying)函数来将您的增量值“烘焙”到点击处理程序中:

function changeCount(delta) {
   return function () {
       var counter = document.getElementById('counter').innerHTML;
       var parsed = parseInt(counter);
       var result = parsed + delta;
       document.getElementById('counter').innerHTML = result;
   } 
}

document.getElementById('minus').onclick = changeCount(-1);
document.getElementById('plus').onclick = changeCount(1);

关于javascript - 如何创建一个带有传递参数的加号和减号按钮的计数器,这样我就不会同时使用两个单独的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57853200/

相关文章:

javascript - 我怎样才能使这个幻灯片代码片段无限循环(我当前的代码不起作用,我不知道我在哪里犯了错误)

javascript - Ember集成测试,如何使用wait构建自定义Helper?

javascript - div 内的 anchor 标记不起作用

javascript - JavaScript 中的 var 变量与 this 不同吗

javascript - ng-click 函数无法调用服务

javascript - 使用 jquery 在 div 中加载内容

javascript - 如何获取页面上被点击的元素的id

javascript - 检查是否有 next() 函数表达式

javascript - 函数返回未定义

javascript - 按下回车键时写入文本区域?