敲了一个计算机,但是输出的结果一直是 NaN,不知道哪里出错,想请教一下
<input type="text" onclick="changeKG(false)" id="text1">
<input id="fuhao" type="text" value="+">
<input type="text" onclick="changeKG(true)" id="text2">
<input type="text" value="=">
<input type="text" id="resule" value=" ">
<table cellspacing="0" cellpadding="0">
<tr>
<td colspan="2"><input class="btn" type="button"id="" value="C" > </td>
</tr>
<tr>
<td><input class="btn" type="button" value="1" onclick="addnum( '1')"></td>
<td><input class="btn" type="button" value="2" onclick="addnum( '2')"></td>
<td><input class="btn" type="button" value="3" onclick="addnum( '3')"></td>
<td><input class="btn" onclick="change('+')" type="button" value="+" ></td>
</tr>
<tr>
<td><input class="btn" type="button" value="4" onclick="addnum( '4')"></td>
<td><input class="btn" type="button" value="5" onclick="addnum( '5')"></td>
<td><input class="btn" type="button" value="6" onclick="addnum( '6')"></td>
<td><input class="btn" onclick="change('-')" type="button" value="-" ></td>
</tr>
<tr>
<td><input class="btn" type="button" value="7" onclick="addnum( '7')"></td>
<td><input class="btn" type="button" value="8" onclick="addnum( '8')"></td>
<td><input class="btn" type="button" value="9" onclick="addnum( '9')"></td>
<td><input class="btn" onclick="change( '*' )" type="button" value="*" ></td>
</tr>
<tr>
<td><input class="btn" type="button" value="." onclick="addnum( '.')"></td>
<td><input class="btn" type="button" value="0" onclick="addnum( '0')"></td>
<td><input class="btn" type="button" value="=" onclick="compute( )"></td>
<td><input class="btn" onclick="change( '/')" type="button" value="/" ></td>
</tr>
</table>
var kaiguan = false
function changeKG (b){
kaiguan = b
}
function change(a){
fuhao.value = a
}
function addnum(num){
if (kaiguan){
text2.value += num
}else{
text1.value += num
}
}
function compute(){
switch (fuhao.value) {
case '+':
resule.value = (text1 -0)+(text2 -0)
break;
case '-':
resule.value = (text1 -0)-(text2 -0)
break;
case '*':
resule.value = (text1-0)*(text2 -0)
break;
case '/':
resule.value = (text1 -0)/(text2 -0)
break;
}
}
1
donotquestion 2020-07-28 17:59:00 +08:00
nan 表示除了 0
|
2
gotonull 2020-07-28 18:09:22 +08:00 2
楼主这开头把我吓到了,敲了个计算机,一看代码原来是计算器。。。
|
3
zhw2590582 2020-07-28 18:14:17 +08:00
我也想用 html 开发一个计算机
|
4
wysnylc 2020-07-28 18:15:57 +08:00
NaN 我就知道是 js
|
5
kop1989 2020-07-28 18:19:04 +08:00 3
突然想起 spaceX 火箭里的控制台用 js 写的。氧气含量:NaN,燃料剩余:undefined😂
|
6
chfight 2020-07-28 18:19:04 +08:00
猜测是类型问题,建议把 onclick="addnum( '1')"替换为 onclick="addnum(1)"试试
|
7
chengxy 2020-07-28 18:26:37 +08:00
为什么 value 能直接用 id 赋值了,新特性吗?
|
8
qiayue 2020-07-28 18:27:17 +08:00 1
你的 text1 和 text2 是什么你并没有定义,
可以用 document.getElementById('text1') 得到这个输入框,再得到值 document.getElementById('text1').value 另外 result 写错了吧,写成 resule 了。 |
9
qiayue 2020-07-28 18:30:34 +08:00 1
如果你想最小改动即可有效,可以只修改 compute 函数,把所有的 text1 改成 text1.value,把所有的 text2 改成 text2.value
|
10
jzmws 2020-07-28 18:46:47 +08:00
第一感觉除数是 0
|
11
fool079 2020-07-28 19:27:58 +08:00
NaN 表示 Not a Number
LZ 这种情况应该是未定义的变量参与了计算,实际是 undefined 被转成了数字运算 |
12
Ainsoph 2020-07-28 21:11:47 +08:00 1
function compute(){
switch (fuhao.value) { case '+': //这里的 text1 和 text2 应该加.value resule.value = (text1.value -0)+(text2.value -0) break; case '-': resule.value = (text1 -0)-(text2 -0) break; case '*': resule.value = (text1-0)*(text2 -0) break; case '/': resule.value = (text1 -0)/(text2 -0) break; } } |
13
bbtjym 2020-07-28 21:14:31 +08:00
除 0 是 Infinity 吧
|