使用动态监听方法实现js简单加减乘除

在菜鸟教程上复习js知识点的时候,Javascript函数章节中有一条《使用 HTML 、JavaScript 创建一个简单的计算器,包含加、减、乘、除四个功能》的笔记,遂下载查阅了代码。

<html>

<head></head>

<body>
    <p>简单计算器:</p>
    <table border="1" style="position:center;">
        <tbody>
            <tr>
                <td>第一个数:</td>
                <td><input type="text" id="first"></td>
            </tr>
            <tr>
                <td>第二个数:</td>
                <td><input type="text" id="twice"></td>
            </tr>
            <tr>
                <td colspan="2">
                    &nbsp;
                    <button style="width:inherit" onclick="add()">+</button>
                    &nbsp;
                    <button style="width:inherit" onclick="subtract()">-</button>
                    &nbsp;
                    <button style="width:inherit" onclick="ride()">*</button>
                    &nbsp;
                    <button style="width:inherit" onclick="devide()">/</button>
                </td>
            </tr>
            <tr>
                <td colspan="2" rowspan="2">
                    <p id="result"></p>
                </td>
            </tr>
        </tbody>
    </table>
    <script>
        var result_1;
        //加法
        function add() {
          var a = getFirstNumber();
          var b = getTwiceNumber();
          var re =Number( a) +Number( b);
          sendResult(re);
        }
        
        //减法
        function subtract() {
          var a = getFirstNumber();
          var b = getTwiceNumber();
          var re = a - b;
          sendResult(re);
        }
        
        //乘法
        function ride() {
          var a = getFirstNumber();
          var b = getTwiceNumber();
          var re = a * b;
          sendResult(re);
        }
        
        //除法
        function devide() {
          var a = getFirstNumber();
          var b = getTwiceNumber();
          var re = a / b;
          sendResult(re);
        }
        
        //给p标签传值
        function sendResult(result_1) {
          var num = document.getElementById("result")
          num.innerHTML = result_1;
        }
        
        //获取第一位数字
        function getFirstNumber() {
          var firstNumber = document.getElementById("first").value;
          return firstNumber;
        }
        
        //获取第二位数字
        function getTwiceNumber() {
          var twiceNumber = document.getElementById("twice").value;
          return twiceNumber;
        }
    </script>
</body>
<script id="allow-copy_script">
    (function e(){var e=!1;document.addEventListener("allow_copy",(function(t){e=t.detail.unlock}));var t=["copy","cut","contextmenu","selectstart","mousedown","mouseup","mousemove","keydown","keypress","keyup"],n=function(t){e&&(t.stopPropagation(),t.stopImmediatePropagation&&t.stopImmediatePropagation())};t.forEach((function(e){document.documentElement.addEventListener(e,n,{capture:!0})}))})()
</script>

</html>

可以看到在js部分的加减乘除函数中多次重复定义了两个操作数a、b并且调用两个取值函数

var a = getFirstNumber();
var b = getTwiceNumber();

为了尽量减少重复代码的出现次数,通过jquery的实时监听更改了取操作数的方法。

1. 引用jquery文件

<script type="text/javascript" src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js" ></script>

2. 绑定(监听)输入事件
首先了解一下jquery中bind绑定方法

$(selector).bind(event,data,function)

selector是我们要监听的html元素,event是监听元素的事件,data传参(可选),function规定了监听事件发生时需要进行的操作内容。

这里我们需要做的是当输入框进行输入时,能够动态获取到输入的内容。因此我们用到的是input propertychange事件(该方法具体的使用条件请自行搜索)。
给tbody标签增加id”tb“后改方法具体代码如下:

$('#tb').bind('input propertychange', function(){
		a = document.getElementById("first").value;     //获取第一个操作数 
		b = document.getElementById("twice").value;     //获取第二个操作数
	});
  1. 完整代码如下
<html>

<head>
    <script type="text/javascript" src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js" ></script>
</head>

<body>
    <p>简单计算器:</p>
    <table border="1" style="position:center;">
        <tbody id="tb">
            <tr>
                <td>第一个数:</td>
                <td><input type="text" id="first"></td>
            </tr>
            <tr>
                <td>第二个数:</td>
                <td><input type="text" id="twice"></td>
            </tr>
            <tr>
                <td colspan="2">
                    &nbsp;
                    <button style="width:inherit" onclick="add()">+</button>
                    &nbsp;
                    <button style="width:inherit" onclick="subtract()">-</button>
                    &nbsp;
                    <button style="width:inherit" onclick="ride()">*</button>
                    &nbsp;
                    <button style="width:inherit" onclick="devide()">/</button>
                </td>
            </tr>
            <tr>
                <td colspan="2" rowspan="2">
                    <p id="result"></p>
                </td>
            </tr>
        </tbody>
    </table>

    <script>
        var result_1,a,b;
        $('#tb').bind('input propertychange', function(){
            a = document.getElementById("first").value;     //获取第一个操作数 
            b = document.getElementById("twice").value;     //获取第二个操作数
        });

        //加法
        function add() {
            var re =Number( a) +Number( b);
            sendResult(re);
        }
        
        //减法
        function subtract() {
            var re = a - b;
            sendResult(re);
        }
        
        //乘法
        function ride() {
            var re = a * b;
            sendResult(re);
        }
        
        //除法
        function devide() {
            var re = a / b;
            sendResult(re);
        }
        
        //给p标签传值
        function sendResult(result_1) {
            var num = document.getElementById("result")
            num.innerHTML = result_1;
        }
        var a = document.getElementById('first').value;
        var b = document.getElementById('twice').value;
        
    </script>
</body>
<script id="allow-copy_script">
    (function e(){var e=!1;document.addEventListener("allow_copy",(function(t){e=t.detail.unlock}));var t=["copy","cut","contextmenu","selectstart","mousedown","mouseup","mousemove","keydown","keypress","keyup"],n=function(t){e&&(t.stopPropagation(),t.stopImmediatePropagation&&t.stopImmediatePropagation())};t.forEach((function(e){document.documentElement.addEventListener(e,n,{capture:!0})}))})()
</script>

</html>



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以帮您讲解如何用JS编写一个简单加减乘除计算器。首先,需要在HTML文件中创建相应的元素,例如input标签用于输入数字、button标签用于输入操作符等。接着,在JavaScript代码中,可以使用事件监听器来监听用户的按钮点击操作,然后根据点击的按钮来执行相应的计算操作,最后将结果输出到屏幕上。下面是一个简单实现示例: HTML代码: ``` <div> <label>输入第一个数字:</label> <input id="input1" type="number"> </div> <div> <label>输入第二个数字:</label> <input id="input2" type="number"> </div> <div> <label>选择操作符:</label> <select id="operator"> <option value="+">加</option> <option value="-">减</option> <option value="*">乘</option> <option value="/">除</option> </select> </div> <button id="calculate">计算</button> <div> <label>结果:</label> <span id="result"></span> </div> ``` JavaScript代码: ``` var num1 = document.getElementById("input1"); var num2 = document.getElementById("input2"); var operator = document.getElementById("operator"); var calculateBtn = document.getElementById("calculate"); var result = document.getElementById("result"); calculateBtn.addEventListener("click", function() { var x = parseFloat(num1.value); var y = parseFloat(num2.value); var op = operator.value; if (op === "+") { result.innerText = x + y; } else if (op === "-") { result.innerText = x - y; } else if (op === "*") { result.innerText = x * y; } else if (op === "/") { result.innerText = x / y; } }); ``` 希望对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值