js制作简易计算器我怎样优化这个代码,写了很多重复的了

<table > <caption>简易计算器</caption> <tr> <td>操作数1:</td> <td colspan="4"><input type="text"id="num1"></td> </tr> <tr> <td >操作数2:</td> <td colspan="4"><input type="text"id="num2"/> </td> </tr> <tr> <td></td> <td><input type="button"id="Add"value="+" onclick="Add();"/></td> <td><input type="button"id="Sub"value="-" onclick="Sub();"/></td> <td><input type="button"id="Rid"value="*" onclick="Rid();"/></td> <td><input type="button"id="Div"value="/" onclick="Div();"/></td> </tr> <tr> <td>结果:</td> <td colspan="4"><input type="text"id="result"/></td> </tr> </table>

第1个回答  2016-09-05

将html改一些:

<td><input type="button"id="Add"value="+" onclick="myClickOperator(1);"/></td>

<td><input type="button"id="Sub"value="-" onclick="myClickOperator(2);"/></td>

<td><input type="button"id="Rid"value="*" onclick="myClickOperator(3);"/></td>

<td><input type="button"id="Div"value="/" onclick="myClickOperator(4);"/></td>


js:

/**
* 操作两个值
* 传入两个值,得到相应运算符的值
*/
function OperatorTwoNum(num1,num2,operator)
{
num1 = parseFloat(num1);
num2 = parseFloat(num2);
switch(operator)
{
case "+":
return num1 + num2;
case "-":
return num1 - num2;
case "*":
return num1 * num2;
case "/":
return num1 / num2;
default:
return null;
}
}



/**
 * 点击的操作
 * 1:加法
 * 2:减法
 * 3:乘法
 * 4:除法
 */
function myClickOperator(index)
{
var num1 = document.getElementById("num1").value;
var num2 = document.getElementById("num2").value;
var result = "";
if(isNaN(num1) || isNaN(num2))
{
alert("请输入数字");
return;
}
switch(index)
{
case 1:
result = OperatorTwoNum(num1,num2,"+");
break;
case 2:
result = OperatorTwoNum(num1,num2,"-");
break;
case 3:
result = OperatorTwoNum(num1,num2,"*");
break;
case 4:
result = OperatorTwoNum(num1,num2,"/");
break;
default:
alert("请输入正确运算符");
}
if(isNaN(result))
{
document.getElementById("result").value=result;
}
}

追问

你这个更复杂了,要是有加减乘除另外的你的case不断增加,script case又写一遍那么多

追答

sorry,我一般很少用eval方法,除了格式json串之外,恩,清楚了一招,ok,thank

js制作简易计算器我怎样优化这个代码,写了很多重复的了
js:\/*** 操作两个值* 传入两个值,得到相应运算符的值*\/function OperatorTwoNum(num1,num2,operator){num1 = parseFloat(num1);num2 = parseFloat(num2);switch(operator){case "+":return num1 + num2;case "-":return num1 - num2;case "*":return num1 * num2;case "\/":ret...

js计算器中如何解决数字重复问题
1、在ue编辑器中新建一个空白的html文件,js文件。2、在ue编辑器中输入以下html代码。3、在ue编辑器中输入以下js代码。4、编辑完成以后,在ue编辑器中点击保存,格式选择UTF8无BOM。5、在浏览器中打开此html文件,可以看到最终想要实现的去掉数组中的重复的数据效果。

js制作一个简易计算器?
如何使用JS编写一个简单的计算器1、是做一个计算器吧。首先放一堆button上去,绑定onclick事件,定义全局变量来接收每一个点击获取到的值,最后放一个input框显示输出的值。这是最简单的一个实现方法,如果看不懂的话可以再问,给你写一下。2、getElementsByld(n2).value);你每次获取n2的值的时候...

11求一个简单 的js 代码 写的计算器 有加减乘除等号 还有mc mr ms m+...
11求一个简单 的js 代码 写的计算器 有加减乘除等号 还有mc mr ms m+m-就行了 要求每一段代码带上注释重复的肯定不用注释了采纳会追加贰佰分绝不食言... 要求每一段代码带上注释 重复的肯定不用注释了 采纳会追加贰佰分 绝不食言 展开  我来答 2个回答 #热议# 【帮帮团】大学生专场,可获百度...

有关于,几个简单的js网页计算器代码的问题。不太懂,希望大家帮我解答一...
1、{obj.expr.value = eval(obj.expr.value)} 首先你需要知道eval这个函数是做什么,原来eval是Javascript有用的内部函数,该函数可以对以字符串形式表示的任意有效的Jscript代码求值。了解这个后,去掉eval,是不是和等号左边一样了呢。所以这个片段的意思就是求obj.expr.value值后再赋值给obj.expr....

js简易计算器,我删掉后面有注释的那3行就没问题,留下就报错Maximum call...
手机版 我的知道 js简易计算器,我删掉后面有注释的那3行就没问题,留下就报错Maximum call stack size exceeded为啥啊? <!DOCTYPEhtml>简易计算器functionaa(){varone=document.getElementById("first").value;varcha=do... <!DOCTYPE html>简易计算器 function aa() { var one = document.getElementById("fir...

seo优化,网站代码冗余度很高是什么意思
就是你的网站本来可以用比较少的代码完成,比如js代码可以放到外部文件,还有就是用表格布局的冗余代码也比较多,建议用div+css布局,能放到外部文件的,都引用外部文件

怎么在网页上制作一个简易计算器
(1)先画个页面,把每个数字 运算符号放进去;(2)然后每个数字 符号绑定一个事件,这个事件获取数字或者符号的值,放进一个Input框;(3)点击计算,把Input框的字符串表达式计算,eval("1*2");(4)还有计算前要对表达式进行校验,不规则的表达式不能计算。

JavaScript期末考试,制作简易计算器。要求只需实现加减乘除的运算既可...
src="http:\/\/libs.baidu.com\/jquery\/1.9.0\/jquery.js">$(function(){$('#b1').click(function(){var sign = $('#s1').val();if(isNaN(Number($('#t1').val())) || isNaN(Number($('#t2').val())){alert('

帮我写个简单的网页计算器代码 超级简单
计算器 function js(){ var num=document.getElementById("num").value;var jg1=num*1.67;var jg2=num*2.38;document.getElementById("jg1").innerHTML=Math.floor(jg1);document.getElementById("jg2").innerHTML=Math.floor(jg2);} 乘以1.67的结果为: 乘以2.38的结果为...

相似回答