JS1----用js实现计算器

计算器

一. 计算器的HTML部分

一些零碎的知识点
1.HTML中的知识
①cellpadding=0 cellspacing=0 单元格间距为0
②online=none 去除按钮点击后出现的蓝边框
③colspan 合并列 rowspan合并行 ( 写到td中)
④tr th td
⑤表格本身是没有边框线的,需要自己加border
⑥给文本框中加disabled表示不能输入的
2.js中的补充知识

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script src="js/计算器.js"></script>               //引入外部js样式
    <style>
        *{
            margin: 0;
            padding: 0;
        }
       table{
            width: 250px;
            height: 360px;
            margin: auto;
        }
        tr td>input{
            width: 250px;
            height:100%;
            font-size: 25px;
            text-align: right;
        }
        td>button{
            width: 100%;
            height: 100%;     /*button 宽和高占td的100%   button占满td*/
            font-size: 25px;
            border: none;
            outline: none;    //去除按钮点击后上边的蓝线
        }
        tr>td{
            border: .5px solid black;
        }
    </style>
</head>
<body>
<table cellpadding="0" cellspacing="0">              <!-- 1.去除单元格间距  2.tr td 用table包住-->
    <tr>
        <td colspan="4" >                             <!--******容易出错:合并四个单元格(一个input占四个单元格)-->
            <input type="text" disabled value="0" class="put"/> </td>     //disabled不能输入的
    </tr>
    <tr><td colspan="2"></td>
        <td colspan="2"><button class="btn">del</button></td>
    </tr>
    <tr>
        <td><button class="btn">7</button></td>
         <td><button class="btn">8</button></td>
        <td><button class="btn">9</button></td>
        <td><button class="btn">*</button></td>
    </tr>
    <tr>
        <td><button class="btn">4</button></td>
        <td> <button class="btn">5</button></td>
        <td><button class="btn">6</button></td>
        <td><button class="btn">/</button></td>
    </tr>
    <tr>
        <td><button class="btn">1</button> </td>
        <td><button class="btn">2</button> </td>
        <td><button class="btn">3</button> </td>
        <td><button class="btn">-</button> </td>
    </tr>
    <tr>
        <td><button class="btn">0</button></td>
        <td><button class="btn">.</button></td>
        <td><button class="btn">+</button></td>
        <td><button class="btn">=</button></td>
    </tr>
</table>
</body>
</html>
计算器静态页面如图

计算器静态页面如图

二. 外部js中的内容

在header中写script或从外部引入js,都要写window.onload 表示加载完成事件
window.onload=function(){
    这里边是你的js内容
}
一 . 先解决输入数字问题

one.一些零碎要点
1.一定要用this指代当前对象
2.put.value指代点击button时input中的对象
3.isNaN()表示括号里边的是字符
two.具体思路
1.当点击button时,在input中输出button中的内容 进行拼接 put.value = put.value + this.innerHTML;
2.只有小数点和数字才可以在input中显示,其他字符无法输出 进行if语句判断(!isNaN(this.innerHTML)) || this.innerHTML=="."
3.输入数值时,0消失(首位不能为0)。输入小数点时,0保留; put.value = this.innerHTML;(这一步是重点)
大体思路:若put.value =0的话,则将button的值赋给put.value后在进行拼接(将0替代)
6.小数点只能出现一次 indexOf(".")== -1 表示小数点没有出现过,若小数点之前出现过,则不执行,不进行拼接

if((!isNaN(this.innerHTML)) || this.innerHTML==".") {
                if (this.innerHTML == ".") {
                    if(put.value.indexOf(".")==-1){
                        put.value = put.value + this.innerHTML;
                    }
                    else{}
                }
                else {       //输入的为数字
                    if (put.value == "0") {
                        put.value = this.innerHTML;
                    }
                    else {
                        put.value = put.value + this.innerHTML;
                    }
                }
            
二. 解决计算问题

① 数组赋值 temp[temp.length] = put.value
join
操作对象为一批字符串,即字符串数组
想让字符串输出为“h,m,n”的格式
对数组对象来说,相当于把数组转换为字符串
var a = ["l", "m", "n"];
console.log(a.join(",")); //l,m,n
/想让字符串输出为“lmn”的格式join是最好的选择!/
console.log(a.join(" ")); //lmn
eval 运算
substring(0,put.value.length-1); (开始,截取数量)

js中的内容

var temp=[];
var  a;
window.onload=function(){
    var btn = document.getElementsByClassName("btn");
    var put =document.getElementsByClassName("put")[0];

    for(var i=0;i<btn.length;i++){
        btn[i].onclick = function(){
           /* console.log(put.value);*/
            if((!isNaN(this.innerHTML)) || this.innerHTML==".") {
                if(a=="="){   //我输入了数字,且前一个运算符是等号
                    put.value = this.innerHTML;//则要开始新一轮运算,之前的数值没有用,将当前输入的赋值到input中
                    a="";  //将a清空
                }
                else{
                    if (this.innerHTML == ".") {
                        if(put.value.indexOf(".")==-1){
                            put.value = put.value + this.innerHTML;
                        }
                        else{}
                    }
                    else {
                        if (put.value == "0") {
                            put.value = this.innerHTML;
                        }
                        else {
                            put.value = put.value + this.innerHTML;
                        }
                    }
                }

            }
            else{  //输入的为字符  并且  不是小数点
                switch (this.innerHTML){
                    case "+":caculate("+");
                        break;
                    case "-":caculate("-");
                        break;
                    case "*":caculate("*");
                        break;
                    case "/":caculate("/");
                        break;
                    case "=":
                        temp[temp.length]=put.value;//若等号运算完后,输入字符则运算继续,上一轮的运算结果作为下一轮的参与数,输入数字则开始新一轮运算
                        /*console.log(temp);*///输出数组,数组中每个元素是字符串类型
                        put.value=eval(temp.join(""));
                        console.log(temp.join("")); //去除数组中的引号,让数组变成字符串
                        temp=[];
                        a="=";//按等号后将等号储存
                        break;
                    case "c":
                        put.value=0;
                        temp=[];
                        a="c";
                        break;
                    case "del":
                        put.value.length==1?put.value=0:put.value=put.value.substring(0,put.value.length-1);//(开始,截取数量)
                        a="del";   //每个符号都得存储
                        break;
                }
            }
        }
    }
    function caculate(symbol){
        temp[temp.length]=put.value;//****数组赋值写法
        put.value=0;
        temp[temp.length]=symbol;//将运算符也存入数组中
        /*console.log(temp);*/
        a=symbol;   //用a储存当前点击的符号
    }
}
//若输入符号,则保留put.value     正常程序
//若输入的是数字,则将输入等号后的input等于当前输入的this.inner(按只有一个等号时我们已经将数组清空了,只有一个得数)
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我很乐意为您介绍JavaScript实现房贷计算器的方法。 首先,我们需要了解房贷计算器的计算公式。一般来说,房贷计算器需要计算出每月还款金额、还款总额、支付利息总额等指标。这些指标的计算公式如下: 每月还款金额 = [贷款本金 × 月利率 × (1 + 月利率)^还款月数] ÷ [(1 + 月利率)^还款月数 - 1] 还款总额 = 每月还款金额 × 还款月数 支付利息总额 = 还款总额 - 贷款本金 了解了计算公式之后,我们就可以开始编写JavaScript代码了。以下是一个简单的房贷计算器实现代码示例: ```javascript // 获取页面元素 var loanAmount = document.getElementById("loan-amount"); var loanTerm = document.getElementById("loan-term"); var interestRate = document.getElementById("interest-rate"); var calculateButton = document.getElementById("calculate-button"); var resultMonthlyPayment = document.getElementById("result-monthly-payment"); var resultTotalPayment = document.getElementById("result-total-payment"); var resultTotalInterest = document.getElementById("result-total-interest"); // 计算每月还款金额 function calculateMonthlyPayment(loanAmount, loanTerm, interestRate) { var monthlyInterestRate = interestRate / 1200; // 月利率 var totalPayment = loanAmount * (1 + monthlyInterestRate * loanTerm); // 还款总额 var monthlyPayment = totalPayment / loanTerm; // 每月还款金额 return monthlyPayment.toFixed(2); // 保留两位小数 } // 计算房贷支付指标 function calculateLoanPayments() { var loanAmountValue = parseFloat(loanAmount.value); var loanTermValue = parseFloat(loanTerm.value); var interestRateValue = parseFloat(interestRate.value); var monthlyPayment = calculateMonthlyPayment(loanAmountValue, loanTermValue, interestRateValue); var totalPayment = monthlyPayment * loanTermValue; var totalInterest = totalPayment - loanAmountValue; resultMonthlyPayment.innerHTML = monthlyPayment.toFixed(2); resultTotalPayment.innerHTML = totalPayment.toFixed(2); resultTotalInterest.innerHTML = totalInterest.toFixed(2); } // 注册计算按钮点击事件 calculateButton.addEventListener("click", calculateLoanPayments); ``` 在上面的代码示例,我们首先通过`document.getElementById()`方法获取了页面的各个元素,然后定义了一个计算每月还款金额的函数`calculateMonthlyPayment()`,最后定义了一个计算房贷支付指标的函数`calculateLoanPayments()`。在`calculateLoanPayments()`函数,我们获取了用户输入的贷款金额、贷款期限和利率,然后调用`calculateMonthlyPayment()`函数计算每月还款金额,并根据公式计算出还款总额和支付利息总额。最后,我们将计算结果显示到页面相应的元素。 最后,我们还为计算按钮注册了一个点击事件,当用户点击按钮时,会自动计算房贷支付指标并显示到页面上。 以上就是一个简单的房贷计算器JavaScript实现方法。希望可以帮助到您!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值