javascript - 尽量减少js中的重复代码

标签 javascript

我在 JavaScript 中有一个计算器功能,使用简单的函数如下:

function add() {
    var a = parseInt(document.getElementById("num1").value);
    var b = parseInt(document.getElementById("num2").value);

    var result = a + b;
    document.getElementById("result").value = result;
}

function subtract() {
    var a = parseInt(document.getElementById("num1").value);
    var b = parseInt(document.getElementById("num2").value);

    var result = a - b;
    document.getElementById("result").value = result;
}

function multiply() {
    var a = parseInt(document.getElementById("num1").value);
    var b = parseInt(document.getElementById("num2").value);

    var result = a * b;
    document.getElementById("result").value = result;
}


function divide() {
    var a = parseInt(document.getElementById("num1").value);
    var b = parseInt(document.getElementById("num2").value);

    var result = a / b;
    document.getElementById("result").value = result;
}

function clearr() {
    document.getElementById("num1").value = "";
    document.getElementById("num2").value = "";
    document.getElementById("result").value = "";
}
<span style="margin-right:1px">Number 1 </span>
 <input id="num1" type="number"  ></br>
 <span style="margin-right:5px" >Number 2</span><input id="num2" type="number" ></br>
<span style="margin-right:29px">Result</span><input id="result" type="number"> </br>


<button id="add" onclick="add()">+</button>
<button id="subtract" onclick="subtract()">-</button>
<button id="multiply" onclick="multiply()">*</button>
<button id="divide" onclick="divide()">/</button>
<button id="clear" onclick="clearr()">clear</button>

但是有很多重复的代码。有没有其他方法可以解决这个问题,而不必每次都重复获取 a 和 b 的值。

最佳答案

您可以按如下方式优化和清理您的代码:

var num1 = document.getElementById("num1");
var num2 = document.getElementById("num2");
var result = document.getElementById("result");

function add(){
    result.value = parseInt(num1.value) + parseInt(num2.value);
}

function subtract(){
    result.value = parseInt(num1.value) - parseInt(num2.value);
}

function multiply(){
    result.value = parseInt(num1.value) * parseInt(num2.value);
}


 function divide(){
     result.value = parseInt(num1.value) / parseInt(num2.value);
 }

 function clear(){
     num1.value = "";
     num2.value = "";
     result.value = "";
 }

如果你想要一个单一的功能。您可以编写以下函数:

 function PerformCalculation(calType){

     var num1 = document.getElementById("num1");
     var num2 = document.getElementById("num2");
     var result = document.getElementById("result");         

     switch(calType) {
         case 1:
             result.value = parseInt(num1.value) + parseInt(num2.value);
             break;
         case 2:
             result.value = parseInt(num1.value) - parseInt(num2.value);
             break;
         case 3:
             result.value = parseInt(num1.value) * parseInt(num2.value);
             break;
         case 4:
             result.value = parseInt(num1.value) / parseInt(num2.value);
             break;
        default:
            result.value ="";
            num1.value = "";
            num2.value = ""; 
    }  
 }

在单击加法按钮时调用 calType 1 到此函数,在单击减法按钮时调用 2,在乘法按钮时调用 3,在除法按钮时调用 4。传递任何其他数字以清除它。您的 HTML 将如下所示:

<button id="add" onclick="PerformCalculation(1)">+</button>
<button id="subtract" onclick="PerformCalculation(2)">-</button>
<button id="multiply" onclick="PerformCalculation(3">*</button>
<button id="divide" onclick="PerformCalculation(4)">/</button>
<button id="clear" onclick="PerformCalculation(0)">clear</button>

关于javascript - 尽量减少js中的重复代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42386279/

相关文章:

javascript - 如何检测 contenteditable div 的内容是否被更改

javascript - 有没有办法通过 cypress 从目标网站访问全局变量?

javascript - 如果我点击 Javascript 中的按钮,如何重置我的棋盘?

javascript - 如何将 json 编码的变量从 .php 传递到外部 .js?

javascript - 关闭嵌套 Accordion 会关闭所有内容

javascript - 过滤驾驶员 ID

javascript - 将文本定位在网格中的 x、y 位置

javascript - FlowJS - 数字......与字符串不兼容

javascript - 我无法在轮播幻灯片之间导航

javascript - 在 NextJS 中拥有后备图像的最佳方法是什么?