老师 我想添加一个算法,为什么说mod没有声明呢?

老师 我想添加一个算法,为什么说mod没有声明呢?

<!DOCTYPE html>

<html>

<head>

    <title> 事件</title>

</head>

<body>

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

    <select id='operate'>

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

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

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

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

        <option value="mod">%</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 num1 = document.querySelector("#num1");

            var num2 = document.querySelector("#num2");

            var operate = document.querySelector("#operate");

            var result = document.querySelector("#result");

            // console.log(operate.value);

            // console.log(num1.value);

            // switch(operate.value){

            //     case 'add': outputResult(operation.add(num1.value,num2.value));break;

            //     case 'subtract': outputResult(operation.subtract(num1.value,num2.value));break;

            //     case 'multiply': outputResult(operation.multiply(num1.value,num2.value));break;

            //     case 'divide': outputResult(operation.divide(num1.value,num2.value));break;

            // };

            outputResult(operateFn(operate.value,num1.value,num2.value));

            

            // result.innerHTML = operation()

        }

        //定义计算方法


        var operateFn = function(name,num1,num2){

            if(!operation[name]) throw new Error('您输入的'+name+'不存在!');

            return operation[name](num1,num2);

        };

        

        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;

            },

            addOperation: function(name,fn){

                if(!operation[name]){

                    operation[name] = fn;

                }

            }

        };


        operation.addOperation(mod,function(num1,num2){

            return num1%num2;

        });

        //定义输出函数

        function outputResult(result2){

            result.value = result2;

        }   

    </script>

</body>

</html>

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

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

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

2回答
Miss路 2019-03-13 11:23:30

同学,你好。

这里是需要加引号的,不加引号就是变量,直接使用就会说没有定义,加上引号是字符串

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

这里要传递的是这个值:

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

你要明白你的写的代码是什么意思哦,不然以后还会出现类似的情况。

如果帮助到了你,欢迎采纳!

祝学习愉快!


Miss路 2019-03-10 14:12:31

同学,你好。

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

这个参数这里报错,你这里要传什么参数?这个mod没有声明,不能直接在这里写。

如果你不太会写,可以参考一下这个同学写的https://class.imooc.com/course/qadetail/94329

如果帮助到了你,欢迎采纳!


  • 提问者 weixinapp_慕粉007 #1
    addOperation: function(name,fn){ if(!operation[name]){ operation[name] = fn; } }这里定义了方法,有传形参。 operation.addOperation(mod,function(num1,num2){ return num1%num2; });这里传入实参,怎么不行呢?我看视频里面也没有声明啊,直接用mod
    2019-03-13 10:57:30
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
组件化思想开发电商网页 18版
  • 参与学习           人
  • 提交作业       467    份
  • 解答问题       4826    个

本路径带你通过系统学习HTML5、JavaScript、jQuery的进阶知识,不仅如此,还会学习如何利用组件化的思想来开发网页,知识点+案例,使得所学可以更好的得到实践。

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

在线咨询

领取优惠

免费试听

领取大纲

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