V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
aglsv
V2EX  ›  JavaScript

计算机输出结果是 NaN

  •  
  •   aglsv · 2020-07-28 17:57:15 +08:00 · 3078 次点击
    这是一个创建于 1608 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    另外 result 写错了吧,写成 resule 了。
    qiayue
        9
    qiayue  
       2020-07-28 18:30:34 +08:00   ❤️ 1
    如果你想最小改动即可有效,可以只修改 compute 函数,把所有的 text1 改成 text1.value,把所有的 text2 改成 text2.value
    jzmws
        10
    jzmws  
       2020-07-28 18:46:47 +08:00
    第一感觉除数是 0
    fool079
        11
    fool079  
       2020-07-28 19:27:58 +08:00
    NaN 表示 Not a Number
    LZ 这种情况应该是未定义的变量参与了计算,实际是 undefined 被转成了数字运算
    Ainsoph
        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;
    }
    }
    bbtjym
        13
    bbtjym  
       2020-07-28 21:14:31 +08:00
    除 0 是 Infinity 吧
    aglsv
        14
    aglsv  
    OP
       2020-07-29 08:52:49 +08:00
    @gotonull 额,叫计算机叫习惯了
    aglsv
        15
    aglsv  
    OP
       2020-07-29 08:54:07 +08:00
    @qiayue 确实是这问题,昨天看了半天没注意到
    aglsv
        16
    aglsv  
    OP
       2020-07-29 08:54:46 +08:00
    @Ainsoph 非常感谢,昨天看了半天没注意到 TvT
    aglsv
        17
    aglsv  
    OP
       2020-07-29 08:55:58 +08:00
    @fool079 是 compute 函数里的 text,那个我前面没定义后面直接用了
    zzzmh
        18
    zzzmh  
       2020-07-29 10:10:34 +08:00
    @kop1989 要是 IE 浏览器就更刺激了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4312 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 01:05 · PVG 09:05 · LAX 17:05 · JFK 20:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.