实战:房贷计算器

1.首先用html组织一个页面

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link href="style.css" rel="stylesheet" type="text/css">
<title>房贷计算器</title>
</head>
<body>
<form action="show.html" method="post">
<table border="1px" cellspacing="0" cellpadding="5px" width="100%">
<tr>
<td colspan="3" >
<span class="title" >房贷计算器</span>
</td>
</tr>
<tr>
<td width="15%">平米单价:</td>
<td width="45%">
<input type="text" id="unitprice" name="unitprice" class="init" >
</td>
<td width="40%">
<span id="unitpriceMsg" class="init"></span>
</td>
</tr>
<tr>
<td width="15%">租&nbsp;&nbsp;&nbsp;&nbsp;金:</td>
<td width="45%">
<input type="text" id="rent" name="rent" class="init" >
</td>
<td width="40%">
<span id="rentMsg" class="init"></span>
</td>
</tr>
<tr>
<td width="15%">物业费:</td>
<td width="45%">
<input type="text" id="cost" name="cost" class="init">
</td>
<td width="40%">
<span id="costMsg" class="init"></span>
</td>
</tr>
<tr>
<td width="15%">面&nbsp;&nbsp;&nbsp;&nbsp;积:</td>
<td width="45%">
<input type="text" id="area" name="area" class="init" >
</td>
<td width="40%">
<span id="areaMsg" class="init"></span>
</td>
<tr>
<td>首&nbsp;&nbsp;&nbsp;&nbsp;付:</td>
<td><input type="text" name="first" id="first" class="init" ></td>
<td><span id="firstMsg" class="init"></span></td>
</tr>
<tr>
<td>贷款利息:</td>
<td><input type="text" name="interest" id="interest" class="init" ></td>
<td><span id="interestMsg" class="init"></span></td>
</tr>
<tr>
<td colspan="3">
<input type="submit" value="提交">
<input type="reset" value="重置">
</td>
</tr>
</table>
</form>
<br>
<div id="result">
<table>
<tr>
<td colspan="2" ><span class="title" >计算结果</span></td>
</tr>
<tr>
<td>首付金额:</td>
<td><span id="firstResult"></span></td>
</tr>
<tr>
<td>贷款总额:</td>
<td><span id="totalResult"></span></td>
</tr>
<tr>
<td>每月支付利息:</td>
<td><span id="monthResult"></span></td>
</tr>
<tr>
<td>每月租金:</td>
<td><span id="rentResult"></span></td>
</tr>
<tr>
<td>每月物业费:</td>
<td><span id="costResult"></span></td>
</tr>
</table>
</div>
<script type="text/javascript" src="script.js"></script>
</body>
</html>

2.数据的输入验证,动态验证
element.addEventListener(event, function, useCapture)

参数值

 

参数描述
event必须。字符串,指定事件名。

注意: 不要使用 "on" 前缀。 例如,使用 "click" ,而不是使用 "onclick"。

提示: 所有 HTML DOM 事件,可以查看我们完整的 HTML DOM Event 对象参考手册
function必须。指定要事件触发时执行的函数。

当事件对象会作为第一个参数传入函数。 事件对象的类型取决于特定的事件。例如, "click" 事件属于 MouseEvent(鼠标事件) 对象。
useCapture 可选。布尔值,指定事件是否在捕获或冒泡阶段执行。

可能值:
  • true - 事件句柄在捕获阶段执行
  • false- false- 默认。事件句柄在冒泡阶段执行

先写一个通用js,
function validateRegEx(eleName,reg) {
var obj=document.getElementById(eleName);
var str=document.getElementById(eleName+'Msg');
if(obj.value!="") {
if (reg.test(obj.value)) {
obj.className = "right";
if (str != null) {
str.innerHTML = "输入格式正确";
str.className = "right";
}
return true;
} else {
obj.className = "wrong";
str.innerHTML = "输入格式错误";
str.className = "wrong";
return false;
}
} else {
obj.className = "wrong";
str.innerHTML = "内容不能为空";
str.className = "wrong";
return false;
}

}
function validateEmpty(eleName) {
var obj=document.getElementById(eleName);
var str=document.getElementById(eleName+'Msg');
if(obj.value!=""){
if(str!=null){
if(obj.value!=""){
obj.className="right";
str.innerHTML="输入格式正确";
str.className="right";
return true;
}else{
obj.className="wrong";
str.innerHTML="内容不可为空!";
str.className="wrong";
return false;
}
}
}

}

然后再写一个js,动态的验证
function validate_unitprice() {
return validateRegEx("unitprice",/^\d+(\.\d{1,2})?$/);
}
function validate_rent() {
return validateRegEx("rent",/^\d+(\.\d{1,2})?$/);
}
function validate_cost() {
return validateRegEx("cost",/^\d+(\.\d{1,2})?$/);
}
function validate_area() {
return validateRegEx("area",/^\d+(\.\d{1,2})?$/);
}
function validate_interest() {
return validateRegEx("interest",/^\d+(\.\d{1,2})?$/);
}
//通过对事件的监听,动态的验证
window.οnlοad=function () {
document.getElementById('unitprice').addEventListener("blur",validate_unitprice,false);
document.getElementById('rent').addEventListener("blur",validate_rent,false);
document.getElementById('cost').addEventListener("blur",validate_cost,false);
document.getElementById('area').addEventListener("blur",validate_area,false);
document.getElementById('interest').addEventListener("blur",validate_interest,false);
//再给添加一个鼠标滑动效果
 
  var treles=document.getElementsByTagName("tr");
  for(var i=0;i<treles.length;i++){
  treles[i].οnmοuseοver=function () {
   this.bgColor="#f2f2f2";
  }
   treles[i].οnmοuseοut=function () {
  this.bgColor="#ffffff";
   }
  }

}
3.计算结果实现
做一个工具函数,实现四舍五入,保留若干位小数。在js中,字符串转化为number类型靠两个函数:parseInt()和parseFloat()
综合实战:房贷计算器
联合验证与数学计算一起进行;将采用动态的事件设置方式。
数据验证完成后,还需要计算出结果。
数据的输入验证,应对所有需要验证的部分准备出相应的工具文件 xxx.js,在js的目录下进行建立。再在这个目录下创建一个house.js文件,主要功能是负责进行验证与计算。
【要是文件变为其他的编码,而不是UTF-8,则打开WS软件的file-settings…-使用搜索:encode-点击file encodings,在右侧框内将project encoding改为UTF-8】
费用计算:牵扯至小数点,以至于四舍五入的操作。在金钱费用上都最多保留两位小数。【以下代码 函数定义至 xxx.js 文件里】
新建一个存放计算函数的js文件,代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link href="style.css" rel="stylesheet" type="text/css">
<title>房贷计算器</title>
</head>
<body>
<form action="show.html" method="post">
<table border="1px" cellspacing="0" cellpadding="5px" width="60%">
<tr>
<td colspan="3" >
<span class="title" >房贷计算器</span>
</td>
</tr>
<tr>
<td width="15%">平米单价:</td>
<td width="45%">
<input type="text" id="unitprice" name="unitprice" class="init" >/平米
</td>
<td width="40%">
<span id="unitpriceMsg" class="init"></span>
</td>
</tr>
<tr>
<td width="15%">租&nbsp;&nbsp;&nbsp;&nbsp;金:</td>
<td width="45%">
<input type="text" id="rent" name="rent" class="init" >/平米
</td>
<td width="40%">
<span id="rentMsg" class="init"></span>
</td>
</tr>
<tr>
<td width="15%">物业费:</td>
<td width="45%">
<input type="text" id="cost" name="cost" class="init">/平米
</td>
<td width="40%">
<span id="costMsg" class="init"></span>
</td>
</tr>
<tr>
<td width="15%">面&nbsp;&nbsp;&nbsp;&nbsp;积:</td>
<td width="45%">
<input type="text" id="area" name="area" class="init" >平米
</td>
<td width="40%">
<span id="areaMsg" class="init"></span>
</td>
<tr>
<td>首&nbsp;&nbsp;&nbsp;&nbsp;付:</td>
<td>
<select name="first" id="first" class="init">
<option value="2">2成</option>
<option value="3">3成</option>
<option value="4" selected>4成</option>
<option value="5">5成</option>
<option value="6">6成</option>
<option value="7">7成</option>
<option value="8">8成</option>
<option value="9">9成</option>
</select>
</td>
<td><span id="firstMsg" class="init"></span></td>
</tr>
<tr>
<td>贷款利息:</td>
<td><input type="text" name="interest" id="interest" class="init" ></td>
<td><span id="interestMsg" class="init"></span></td>
</tr>
<tr>
<td colspan="3">
<input type="button" value="计算" οnclick="cal()">
<input type="reset" value="重置">
</td>
</tr>
</table>
</form>
<br>
<div id="result">
<table>
<tr>
<td colspan="2" ><span class="title" >计算结果</span></td>
</tr>
<tr>
<td>首付金额:</td>
<td><span id="firstResult"></span></td>
</tr>
<tr>
<td>贷款总额:</td>
<td><span id="totalResult"></span></td>
</tr>
<tr>
<td>每月支付利息:</td>
<td><span id="monthResult"></span></td>
</tr>
<tr>
<td>每月租金:</td>
<td><span id="rentResult"></span></td>
</tr>
<tr>
<td>每月物业费:</td>
<td><span id="costResult"></span></td>
</tr>
</table>
</div>
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="house.js"></script>
<script type="text/javascript" src="calculate.js"></script>
</body>
</html>


















转载于:https://www.cnblogs.com/Emma2333/p/6876621.html

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
房贷计算器是一个非常实用的工具,可以帮助人们计算出每月应还款和资产剩余情况。下面是一个简单的流程控制案例,用于实现房贷计算器的基本功能: 1. 首先,需要获取用户输入的个人总资产、月收入、目标房产相关信息和身上已有的车贷等信息。 2. 接下来,需要根据用户输入的信息计算出每月应还款和资产剩余情况。这个过程可以根据不同的贷款方式(等额本金和等额本息)进行计算。 3. 最后,将计算结果输出给用户,让用户了解每月应还款和资产剩余情况。 下面是一个简单的Python代码示例,用于实现房贷计算器的基本功能: ```python # 获取用户输入的个人总资产、月收入、目标房产相关信息和身上已有的车贷等信息 total_assets = float(input("请输入您的个人总资产:")) monthly_income = float(input("请输入您的月收入:")) house_price = float(input("请输入您的目标房产价格:")) down_payment = float(input("请输入您的首付款金额:")) loan_amount = house_price - down_payment car_loan = float(input("请输入您身上的车贷金额:")) # 计算每月应还款和资产剩余情况 interest_rate = 0.05 # 假设利率为5% month_num = 240 # 假设贷款期限为20年 monthly_payment = (loan_amount * interest_rate / 12 * (1 + interest_rate / 12) ** month_num) / ((1 + interest_rate / 12) ** month_num - 1) remaining_assets = total_assets - down_payment - car_loan # 输出计算结果 print("每月应还款:%.2f元" % monthly_payment) print("资产剩余:%.2f元" % remaining_assets) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值