Tang小溪
2016-04-01 17:30
为什么我的+-*/的运算结果是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>
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>
下拉列表里面的onfocus函数是需要鼠标点进去的事件(我是这样理解的)
官方说法:对象获得焦点时触发
JavaScript进阶篇
468194 学习 · 21891 问题
相似问题