Javascript 最小化js中的重复代码

Javascript 最小化js中的重复代码,javascript,Javascript,我有一个JavaScript计算器功能,使用以下简单函数: 函数添加(){ var a=parseInt(document.getElementById(“num1”).value); var b=parseInt(document.getElementById(“num2”).value); var结果=a+b; document.getElementById(“结果”).value=result; } 函数减法(){ var a=parseInt(document.getElementByI

我有一个JavaScript计算器功能,使用以下简单函数:
函数添加(){
var a=parseInt(document.getElementById(“num1”).value);
var b=parseInt(document.getElementById(“num2”).value);
var结果=a+b;
document.getElementById(“结果”).value=result;
}
函数减法(){
var a=parseInt(document.getElementById(“num1”).value);
var b=parseInt(document.getElementById(“num2”).value);
var结果=a-b;
document.getElementById(“结果”).value=result;
}
函数乘法(){
var a=parseInt(document.getElementById(“num1”).value);
var b=parseInt(document.getElementById(“num2”).value);
var结果=a*b;
document.getElementById(“结果”).value=result;
}
函数除法(){
var a=parseInt(document.getElementById(“num1”).value);
var b=parseInt(document.getElementById(“num2”).value);
var结果=a/b;
document.getElementById(“结果”).value=result;
}
函数clear(){
document.getElementById(“num1”).value=“”;
document.getElementById(“num2”).value=“”;
document.getElementById(“结果”).value=“”;
}
1号

二号
结果
+ - * /
清除
您可以按如下方式优化和清理代码:

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 = ""; 
    }  
 }
function doOperation(type) {
    var a_el = document.getElementById("num1"),
        b_el = document.getElementById("num2"),
        a = parseInt(a_el.value),
        b = parseInt(b_el.value),
        result = document.getElementById("result");

    switch (type) {
        case '+':
            result.value = a + b;
            break;
        case '-':
            result.value = a - b;
            break;
        case '*':
            result.value = a * b;
            break;
        case '/':
            result.value = a / b;
            break;
        default:
            a_el.value = '';
            b_el.value = '';
            result.value = '';
            break;
    }    
}
单击添加按钮调用calType 1,单击减法按钮调用calType 2,单击乘法按钮调用calType 3,单击除法按钮调用calType 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>
+
-
*
/
清楚的

使用以下自定义功能:

 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 = ""; 
    }  
 }
function doOperation(type) {
    var a_el = document.getElementById("num1"),
        b_el = document.getElementById("num2"),
        a = parseInt(a_el.value),
        b = parseInt(b_el.value),
        result = document.getElementById("result");

    switch (type) {
        case '+':
            result.value = a + b;
            break;
        case '-':
            result.value = a - b;
            break;
        case '*':
            result.value = a * b;
            break;
        case '/':
            result.value = a / b;
            break;
        default:
            a_el.value = '';
            b_el.value = '';
            result.value = '';
            break;
    }    
}
用法:

doOperation('*'); // multiplication
doOperation(); // clearing

使用一个传递操作名称的函数,然后使用
if
/
开关检查它。要清除所有,只需传入不存在的操作:

函数动作(方法){
var a=parseInt(document.getElementById(“num1”).value);
var b=parseInt(document.getElementById(“num2”).value);
var结果=null;
开关(方法){
案例“添加”:
结果=a+b;
打破
“减法”格:
结果=a-b;
打破
“乘法”情况:
结果=a*b;
打破
“除名”一案:
如果(b!=0){
结果=a/b;
}否则{
警报('不能被0除');
返回;
}
打破
}
如果(结果!==null){
document.getElementById(“结果”).value=result;
}否则{
document.getElementById(“num1”).value=“”;
document.getElementById(“num2”).value=“”;
document.getElementById(“结果”).value=“”;
}
}
1号

二号
结果
+ - * /
清除
您可以定义单个函数并将按钮本身作为参数传递,然后根据按钮id进行计算

功能文档(btn){
var a=parseInt(document.getElementById(“num1”).value);
var b=parseInt(document.getElementById(“num2”).value);
var结果=0;
如果(btn.id=='add'){
结果=a+b;
}else if(btn.id=='subtract'){
结果=a-b;
}else if(btn.id=='multiply'){
结果=a*b;
}else if(btn.id=='divide'){
结果=a/b;
}否则{
警报(“未定义的动作”);
返回;
}
document.getElementById(“结果”).value=result;
}
函数clear(){
document.getElementById(“num1”).value=“”;
document.getElementById(“num2”).value=“”;
document.getElementById(“结果”).value=“”;
}

第一

二号
结果
+ - * / 清楚的
这里应该有人帮你

varids=['num1','num2','result'];
函数getVal(id){
返回parseInt(document.getElementById(id).value);
}
函数setVal(id,result){
document.getElementById(id).value=result;
}
函数setCalc(func){
setVal(ids[2]、func(getVal(ids[0])、getVal(ids[1]));
}
函数clearAll(){
map(函数(id){setVal(id',);});
}
函数add(a,b){返回a+b;}
函数减法(a,b){返回a-b;}
函数乘法(a,b){返回a*b;}
函数除法(a,b){返回a/b;}
1号

二号
结果
+ - * /
清除
您可以创建一个函数来获取
a
b
,然后在每个方法中调用它。P.S you'S br'S应该是这样的

在代码顶部定义a+b,然后将其传递给每个函数Nice但我希望一个函数可以完成所有任务并返回所有操作我认为这个问题更适合。这是对的,但我需要一个函数,它将返回所有操作的值更新了我的答案。只有一个函数和多个函数…您可以使用任何您喜欢的方式,其中是
clear()
?返回0不会清除元素。编辑后:无论您的
类型是什么
,您的案例都会丢失
中断
,因此只会执行最终的
默认值
,您仍然会在每个函数中重复代码,您只需将其包装在变量中。我创建了多个函数来分隔该功能。@Justinas:utilsConfig.Math将自动调用所有函数。