检查一下代码

来源:4-8 编程练习

weixin_慕的地5241954

2019-09-18 04:38:26

<!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">
        // 封装获取id的方法
        function byID(id) {
            return typeof (id) === 'string' ? document.getElementById(id) : id;
        }
        // 加 
        function addHandler(num1, num2) {
            return +num1 + +num2;
        }
        // 减
        function subtractHandler(num1, num2) {
            return num1 - num2;
        }
        // 乘
        function multiplyHandler(num1, num2) {
            return num1 * num2;
        }
        // 除
        function divideHandler(num1, num2) {
            return num1 / num2;
        }

        function count() {
            /*此处写代码*/
            var num1 = byID('num1').value;
            var num2 = byID('num2').value;
            var operate = byID('operate').value;
            var result = byID('result');
            // 这里为什么不能byID('result').value?
            console.log(operate)
            // 遍历符号,计算
            switch (operate) {
                case '+':
                    result.value = addHandler(num1, num2);
                    break;
                case '-':
                    result.value = subtractHandler(num1, num2);
                    break;
                case '*':
                    result.value = multiplyHandler(num1, num2);
                    break;
                case '/':
                    result.value = divideHandler(num1, num2);
                    break;
            }
        }
    </script>
</body>

</html>

检查一下代码,看看我的注释,还有就是代码如何优化?比如位置该如何调整、算法如何服装到一个对象里面?

写回答

2回答

好帮手慕夭夭

2019-09-19

你好同学,老师第一次在截图中写的不是赋值,是获取哦。请同学再认真看一下注释。byID('result').value;是获取空字符,所以result =“”,此时result 就不是一个dom元素了,而是一个空字符串,所以下面使用 result.value肯定会报错的。再次强调,此时result不是一个dom元素了,所以没有办法重新给input元素设置value值哦。

祝学习愉快,望采纳。

0

好帮手慕夭夭

2019-09-18

你好同学,问题参考如下:

http://img.mukewang.com/climg/5d81a3a109bd30cb11920313.jpg

本题的代码很简单简洁了,不用再优化了。祝学习愉快,望采纳。

0
heixin_慕的地5241954
h var result = byID('result').value;这样写是赋值input元素的value值为空字符串,那switch里面直接用result 不就是给input元素的value值赋值吗?但是我试了不行,跟num1原理不一样,为什么?
h019-09-18
共1条回复

0 学习 · 14456 问题

查看课程