老师,为什么没输出结果

老师,为什么没输出结果

<!DOCTYPE html>

<html>

<head>

    <title> 事件</title>

</head>

<body>

    <input type='text' id='num1' />

    <select id='operate'>

        <option value='+'>+</option>

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

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

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

    </select>

    <input type='text' id='num2' />

    <input type='button' value=' = ' onclick="count()" />

    <input type='text' id='result' />

    <script type="text/javascript">

        function count() {

            /*此处写代码*/

            //获取对象

            var formerInput = byId('num1'),

                sign = byId('operate'),

                secondInput = byId('num2'),

                resultOutput = byId('result');

                //封装getElementById()的方法

                function byId(id){

                 return typeof(id)==="string" ? document.getElementById(id) : id;

                }

            //运算

            var operation ={

                //加

                add:function(num1,num2){

                    return +num1 + +num2;

                },

                //减

                subtract:function(num1,num2){

                    return num1-num2;

                },

                //乘

                multiply:function(num1,num2){

                    return num1*num2;

                },

                //除

                divide:function(num1,num2){

                    return num1/num2;

                }

            };

            //输出结果

            function outputResult(result){

                outputResult.value=result;

            }

                switch(sign.value){

                    case 'add':

                        outputResult(operation.add(formerInput.value,secondInput.value));

                        break;

                    case 'subtract':

                        outputResult(operation.subtract(formerInput.value,secondInput.value));

                        break;

                    case 'multiply':

                        outputResult(operation.multiply(formerInput.value,secondInput.value));

                        break;

                    case 'divide':

                        outputResult(operation.divide(formerInput.value,secondInput.value));

                        break;

                }

            }


    </script>

</body>

</html>


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
好帮手慕言 2020-02-23 17:40:17

同学你好,因为在switch语句中使用了operation对象中定义的内容,所以要先定义operation,再使用,也就是要把switch语句放到operation对象的后面。

如果还有其他疑问,建议在问答区重新提问,便于后期查找总结

如果我的回答帮到了你,欢迎采纳,祝学习愉快~

提问者 未来it界的一枚程序媛 2020-02-23 11:16:45

http://img1.sycdn.imooc.com//climg/5e51ee710911826108990241.jpg老师,我也发现这个错误了,然后改了,但是为什么说add未定义呢

好帮手慕言 2020-02-23 10:07:41

同学你好,通过sign.value获取的是加减乘除的符号,而不是add、subtract等,可以参考下方修改:

http://img1.sycdn.imooc.com//climg/5e51de2b09aa369f10840590.jpg

输入结果:

http://img1.sycdn.imooc.com//climg/5e51de540959338505000141.jpg

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

  • 老师,这里为什么需要将switch语句放到operation对象下面,才可以调用add等
    2020-02-23 11:21:52
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师