博客列表 >0912作业:js 操作HTML实战

0912作业:js 操作HTML实战

Samoye
Samoye原创
2018年09月16日 23:35:34728浏览

编程: 使用js完成一个功能相对完整的计算器案例

实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>简单四则运算器</title>
</head>
<body>
<div>
    <form action="">
        <table>
            <caption>计算器</caption>
            <tr>
                <td><input type="text" name="no1" placeholder="运算数1"></td>
                <td><select name="option" id="">
                    <option value="null">请选择运算符</option>
                    <option value="sum">+</option>
                    <option value="sub">-</option>
                    <option value="mul">*</option>
                    <option value="div">/</option>
                    </select>
                </td>
                <td><input type="text" name="no2" placeholder="运算数2"></td>
                <td><button type="button">计算</button></td>
            </tr>
            <tr>
                <td>结果:</td>
                <td id="result"></td>
            </tr>
        </table>
    </form>
</div>
<!--用js操作HTML的思路:1.通过 name属性、id、tag等得到相应的对象2.通过函数等对对象的属性添加行为-->
<script>
    //1. 通过DOM的方法获得HTML对象
  let no1 = document.getElementsByName('no1')[0];//通过ByName获得是对象数组,在这里得到是以no1为name的input的数组对象 ,这里数组仅一个数据
  let no2 = document.getElementsByName('no2')[0];
  let option = document.getElementsByName('option')[0];
  let btn = document.getElementsByTagName('button')[0]; //elements 都是复数,还是数组
  let result = document.getElementById('result'); //id 唯一性,这个仅一个对象

  //  2. 添加事件
    btn.onclick = function (){
        //初始化运算数
        let data1 = 0;
        let data2 = 0;
        // 对运算数进行非空及非数字类型判断
        if (no1.value.length === 0){
            alert ('第一个运算数不能为空!')
            no1.focus();
            // return false; // 用来阻止浏览器的默认行为,但是这里,搞不懂,这是个判断语句,不符合要求自然不会执行啊
        } else if (isNaN(no1.value)) {
            alert ('请输入数字!');
        } else if (no2.value.length === 0){
            alert ('请输入第二个运算数!');
            no2.focus();
        } else if (isNaN(no2.value)){
            alert('第二个运算数必须是数字')
            no2.focus();
        } else {
            data1 = parseFloat(no1.value);
            data2 = parseFloat(no2.value);
        }
     // 判断运算符
        let options = option.value; //获取运算符
        let temp = 0 ;//设置一个临时变量,存储运算结果
        let flag = ''; //设置一个标识符

        switch (options) {
            case 'null':
                alert('请选择适当运算符');
                option.focus();
                break;
            case 'sum':
                flag = '+';
                temp = data1 + data2 ;
                break;
            case 'sub':
                flag = '-';
                temp = data1 - data2;
                break;
            case 'mul':
                flag = '*';
                temp = data1 * data2;
                break;
            case 'div':
                flag = '/';
                // 对除数非零判断
                if (data2 === 0){
                    alert('运算数2,除数不能为零,你不知道吗??')
                    no2.focus();
                    no2.value = ''; //获取聚焦,并清空
                    return false;
                } else {
                    temp = data1 / data2;
                    temp = Math.round(temp *100) /100 ;//Math.round(No)是把一个数舍入最接近的数字,先乘以100在除以100是为了取2位小数
                }
                break;
        }

        result.innerHTML = temp;

    }


</script>
</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议