为了账号安全,请及时绑定邮箱和手机立即绑定

【郁闷哪里出错了】使用JS完成一个简单的计算器功能。实现2个输入框中输入整数后,点击第三个输入框能给出2个整数的加减乘除。

为什么我的+-*/的运算结果是nan?我承认我写的好像很复杂。刚才看了下童鞋的代码,好像根本没必要这么复杂

鄙人的代码如下。

<!doctype html>

<html>

<head>

<meta charset="utf-8">

<title>无标题文档</title>

<script type="text/javascript">

var m1;//第一个数

var fuhao;//运算符号

var m2;//第二个数

var jieguo;//运算结果

function a1()

{var m1=document.getElementById('m1').value;}//执行函数a1时,抓取id为m1的值,并赋值给变量m1。

function f1()

{var fuhao=document.getElementById('fuhao').value;}//执行函数f1时,抓取id为fuhao的值,并赋值给变量fuhao。

function a2()

{var m2=document.getElementById('m2').value;}//执行函数a2时,抓取id为m2的值,并赋值给变量m2。


function a3()

{

if(fuhao='+'){jieguo=m1+m2}

else if(fuhao='-'){jieguo=m1-m2}

else if(fuhao='*'){jieguo=m1*m2}

else if(fuhao='/'){jieguo=m1/m2}

else{jieguo='您输入的符号暂时不能计算结果'}

window.alert(jieguo);

}


</script>

</head>


<body>

<form>

<input id="m1" type="text" value="请输入第一个数值" onBlur="a1()"/>

<select id="fuhao" onFocus="f1()" >

<option value="+">+</option>

<option value="-">-</option>

<option value="*">*</option>

<option value="/">/</option>

<option value="#">#</option>

</select>

<input id="m2" type="text" value="请输入第二个数值" onBlur="a2()"/>

<input id="dengyu" type="button" value="点击弹出结果" onClick="a3()"/>

</form>

</body>

</html>

http://img1.sycdn.imooc.com//56fe3fa90001b9eb10570376.jpg

正在回答

2 回答

1. 代码冗余过多、注意简化代码(我只是修改了错误、代码简化就不多说了)

2. 注意赋值和判断

3. 在select 的 onfocus函数第一次没有点击聚焦就没有用,从而显示符号不对无法计算!

<!doctype html>

<html>

<head>

<meta charset="utf-8">

<title>无标题文档</title>

<script type="text/javascript">

var m1;//第一个数

var fuhao;//运算符号

var m2;//第二个数

var jieguo;//运算结果

function a1()

{ m1=Number(document.getElementById('m1').value);}

function f1()//这方法基本上是多余的、你可以直接写在a3()里面获取符号

{ fuhao=document.getElementById('fuhao').value;}

function a2()

{ m2=Number(document.getElementById('m2').value);}

function a3()

{        //注意m1和m2的值(强制类型转换Number()或parseInt()等)

f1();//重置获取符号调用 f1()

if(fuhao=='+'){jieguo=m1+m2}//注意=和==(=是赋值,==是判断)

else if(fuhao=='-'){jieguo=m1-m2}

else if(fuhao=='*'){jieguo=m1*m2}

else if(fuhao=='/'){jieguo=m1/m2}

else{jieguo='您输入的符号暂时不能计算结果'}

window.alert(jieguo);

}


</script>

</head>


<body >

<form>

<input id="m1" type="text" value="请输入第一个数值" onBlur="a1()"/>

<select id="fuhao"  >

<option value="+">+</option>

<option value="-">-</option>

<option value="*">*</option>

<option value="/">/</option>


</select>

<input id="m2" type="text" value="请输入第二个数值" onBlur="a2()"/>

<input id="dengyu" type="button" value="点击弹出结果" onClick="a3()"/>

</form>

</body>

</html>


0 回复 有任何疑惑可以回复我~
#1

Tang小溪 提问者

说实话,几天没回来学习,看我几天前写的代码已经一头雾水了,您竟然认真看完并且做出修改,佩服!功夫很深呀! 在select 的 onfocus函数第一次没有点击聚焦就没有用,从而显示符号不对无法计算! 第一次没有点击聚焦就没有用是什么意思呀
2016-04-09 回复 有任何疑惑可以回复我~

下拉列表里面的onfocus函数是需要鼠标点进去的事件(我是这样理解的)

官方说法:对象获得焦点时触发

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

【郁闷哪里出错了】使用JS完成一个简单的计算器功能。实现2个输入框中输入整数后,点击第三个输入框能给出2个整数的加减乘除。

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信