计算机输出结果是 NaN

2020-07-28 17:57:15 +08:00
 aglsv

敲了一个计算机,但是输出的结果一直是 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;
                 }
            }
2956 次点击
所在节点    JavaScript
18 条回复
donotquestion
2020-07-28 17:59:00 +08:00
nan 表示除了 0
gotonull
2020-07-28 18:09:22 +08:00
楼主这开头把我吓到了,敲了个计算机,一看代码原来是计算器。。。
zhw2590582
2020-07-28 18:14:17 +08:00
我也想用 html 开发一个计算机
wysnylc
2020-07-28 18:15:57 +08:00
NaN 我就知道是 js
kop1989
2020-07-28 18:19:04 +08:00
突然想起 spaceX 火箭里的控制台用 js 写的。氧气含量:NaN,燃料剩余:undefined😂
chfight
2020-07-28 18:19:04 +08:00
猜测是类型问题,建议把 onclick="addnum( '1')"替换为 onclick="addnum(1)"试试
chengxy
2020-07-28 18:26:37 +08:00
为什么 value 能直接用 id 赋值了,新特性吗?
qiayue
2020-07-28 18:27:17 +08:00
你的 text1 和 text2 是什么你并没有定义,
可以用 document.getElementById('text1') 得到这个输入框,再得到值 document.getElementById('text1').value

另外 result 写错了吧,写成 resule 了。
qiayue
2020-07-28 18:30:34 +08:00
如果你想最小改动即可有效,可以只修改 compute 函数,把所有的 text1 改成 text1.value,把所有的 text2 改成 text2.value
jzmws
2020-07-28 18:46:47 +08:00
第一感觉除数是 0
fool079
2020-07-28 19:27:58 +08:00
NaN 表示 Not a Number
LZ 这种情况应该是未定义的变量参与了计算,实际是 undefined 被转成了数字运算
Ainsoph
2020-07-28 21:11:47 +08:00
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;
}
}
bbtjym
2020-07-28 21:14:31 +08:00
除 0 是 Infinity 吧
aglsv
2020-07-29 08:52:49 +08:00
@gotonull 额,叫计算机叫习惯了
aglsv
2020-07-29 08:54:07 +08:00
@qiayue 确实是这问题,昨天看了半天没注意到
aglsv
2020-07-29 08:54:46 +08:00
@Ainsoph 非常感谢,昨天看了半天没注意到 TvT
aglsv
2020-07-29 08:55:58 +08:00
@fool079 是 compute 函数里的 text,那个我前面没定义后面直接用了
zzzmh
2020-07-29 10:10:34 +08:00
@kop1989 要是 IE 浏览器就更刺激了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/693823

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX