原生JS实现汇率转换功能代码实例


Posted in Javascript onMay 13, 2020

代码如下

html代码

<!DOCTYPE html>
<html lang="en">
<head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta http-equiv="X-UA-Compatible" content="ie=edge" /> <title>Exchange Rate Calculator</title> <link rel="stylesheet" href="style.css" rel="external nofollow" />
</head>
<body>
<img src="money.png" alt="" class="money-img" />
<h1>Exchange Rate Calculator</h1>
<p>Choose the currency and the amounts to get the exchange rate</p>
<div class="container"> <div class="currency"> <select id="currency-one"> <option value="AED">AED</option> <option value="ARS">ARS</option> <option value="AUD">AUD</option> <option value="BGN">BGN</option> <option value="BRL">BRL</option> <option value="BSD">BSD</option> <option value="CAD">CAD</option> <option value="CHF">CHF</option> <option value="CLP">CLP</option> <option value="CNY">CNY</option> <option value="COP">COP</option> <option value="CZK">CZK</option> <option value="DKK">DKK</option> <option value="DOP">DOP</option> <option value="EGP">EGP</option> <option value="EUR">EUR</option> <option value="FJD">FJD</option> <option value="GBP">GBP</option> <option value="GTQ">GTQ</option> <option value="HKD">HKD</option> <option value="HRK">HRK</option> <option value="HUF">HUF</option> <option value="IDR">IDR</option> <option value="ILS">ILS</option> <option value="INR">INR</option> <option value="ISK">ISK</option> <option value="JPY">JPY</option> <option value="KRW">KRW</option> <option value="KZT">KZT</option> <option value="MXN">MXN</option> <option value="MYR">MYR</option> <option value="NOK">NOK</option> <option value="NZD">NZD</option> <option value="PAB">PAB</option> <option value="PEN">PEN</option> <option value="PHP">PHP</option> <option value="PKR">PKR</option> <option value="PLN">PLN</option> <option value="PYG">PYG</option> <option value="RON">RON</option> <option value="RUB">RUB</option> <option value="SAR">SAR</option> <option value="SEK">SEK</option> <option value="SGD">SGD</option> <option value="THB">THB</option> <option value="TRY">TRY</option> <option value="TWD">TWD</option> <option value="UAH">UAH</option> <option value="USD" selected>USD</option> <option value="UYU">UYU</option> <option value="VND">VND</option> <option value="ZAR">ZAR</option> </select> <input type="number" id="amount-one" placeholder="0" value="1" /> </div> <div class="swap-rate-container"> <button class="btn" id="swap"> Swap </button> <div class="rate" id="rate"></div> </div> <div class="currency"> <select id="currency-two"> <option value="AED">AED</option> <option value="ARS">ARS</option> <option value="AUD">AUD</option> <option value="BGN">BGN</option> <option value="BRL">BRL</option> <option value="BSD">BSD</option> <option value="CAD">CAD</option> <option value="CHF">CHF</option> <option value="CLP">CLP</option> <option value="CNY">CNY</option> <option value="COP">COP</option> <option value="CZK">CZK</option> <option value="DKK">DKK</option> <option value="DOP">DOP</option> <option value="EGP">EGP</option> <option value="EUR" selected>EUR</option> <option value="FJD">FJD</option> <option value="GBP">GBP</option> <option value="GTQ">GTQ</option> <option value="HKD">HKD</option> <option value="HRK">HRK</option> <option value="HUF">HUF</option> <option value="IDR">IDR</option> <option value="ILS">ILS</option> <option value="INR">INR</option> <option value="ISK">ISK</option> <option value="JPY">JPY</option> <option value="KRW">KRW</option> <option value="KZT">KZT</option> <option value="MXN">MXN</option> <option value="MYR">MYR</option> <option value="NOK">NOK</option> <option value="NZD">NZD</option> <option value="PAB">PAB</option> <option value="PEN">PEN</option> <option value="PHP">PHP</option> <option value="PKR">PKR</option> <option value="PLN">PLN</option> <option value="PYG">PYG</option> <option value="RON">RON</option> <option value="RUB">RUB</option> <option value="SAR">SAR</option> <option value="SEK">SEK</option> <option value="SGD">SGD</option> <option value="THB">THB</option> <option value="TRY">TRY</option> <option value="TWD">TWD</option> <option value="UAH">UAH</option> <option value="USD">USD</option> <option value="UYU">UYU</option> <option value="VND">VND</option> <option value="ZAR">ZAR</option> </select> <input type="number" id="amount-two" placeholder="0" /> </div>
</div>
<script src="script.js"></script>
</body>
</html>

css代码

:root {
	--primary-color: #5fbaa7;
}
* {
	box-sizing: border-box;
}
body {
	background-color: #f4f4f4;
	font-family: Arial, Helvetica, sans-serif;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	height: 100vh;
	margin: 0;
	padding: 20px;
}
h1 {
	color: var(--primary-color);
}
p {
	text-align: center;
}
.btn {
	color: #fff;
	background: var(--primary-color);
	cursor: pointer;
	border-radius: 5px;
	font-size: 12px;
	padding: 5px 12px;
}
.money-img {
	width: 150px;
}
.currency {
	padding: 40px 0;
	display: flex;
	align-items: center;
	justify-content: space-between;
}
.currency select {
	padding: 10px 20px 10px 10px;
	-moz-appearance: none;
	-webkit-appearance: none;
	appearance: none;
	border: 1px solid #dedede;
	font-size: 16px;
	background: transparent;
	background-image: url('data:image/svg+xml;
	charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2229 2.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%20000002%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E');
	background-position: right 10px top 50%, 0, 0;
	background-size: 12px auto, 100%;
	background-repeat: no-repeat;
}
.currency input {
	border: 0;
	background: transparent;
	font-size: 30px;
	text-align: right;
}
.swap-rate-container {
	display: flex;
	align-items: center;
	justify-content: space-between;
}
.rate {
	color: var(--primary-color);
	font-size: 14px;
	padding: 0 10px;
}
select:focus,
input:focus,
button:focus {
	outline: 0;
}
@media (max-width: 600px) {
	.currency input {
	width: 200px;
}
}

JavaScript代码

// 获取货币1对象
let currencyEl_one = document.getElementById("currency-one");
// 获取货币2对象
let currencyEl_two = document.getElementById("currency-two");
// 获取货币1对应的汇率对象
let amountEl_one = document.getElementById("amount-one");
// 获取货币2对应的汇率对象
let amountEl_two = document.getElementById("amount-two");
// 获取提示框对应的对象
let rateEl = document.getElementById("rate");

// 检查初始状态下 是否需要换算汇率
getData();

// 货币2发生变化时 触发的事件
currencyEl_two.onchange = getData;

// 货币1发生变化时 触发的事件
currencyEl_one.onchange = getData;

// 获取按钮 货币1和货币2是否都有值
let btn = document.getElementById("swap");

// 点击交换按钮时 触发的事件
btn.onclick = function() {
  // console.log("!!!");
  let currency_one = currencyEl_one.value;
  let currency_two = currencyEl_two.value;
  // 定义临时变量
  let temp = currency_one;
  // 交换货币1和货币2的value
  currencyEl_one.value = currency_two;
  currencyEl_two.value = temp;
  // 并且交换货币1和货币2对应的汇率
  currency_one = currency_two;
  currency_two = temp;

  fetch(`https://api.exchangerate-api.com/v4/latest/${currency_one}`)
    .then(res => res.json())
    .then(data => {
      const rate = data.rates[currency_two];
      rateEl.innerText = `1 ${currency_one} = ${rate} ${currency_two}`;
      amountEl_two.value = (amountEl_one.value * rate).toFixed(2);
    });

};

// 得到汇率
function getData() {
    let currency_one = currencyEl_one.value;
    let currency_two = currencyEl_two.value;
    fetch(`https://api.exchangerate-api.com/v4/latest/${currency_one}`)
      .then(res => res.json())
      .then(data => {
        const rate = data.rates[currency_two];
        rateEl.innerText = `1 ${currency_one} = ${rate} ${currency_two}`;
        amountEl_two.value = (amountEl_one.value * rate).toFixed(2);

      });
}

运行效果

原生JS实现汇率转换功能代码实例

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript实现两个Table固定表头根据页面大小自行调整
Jan 03 Javascript
用jquery的方法制作一个简单的导航栏
Jun 23 Javascript
图解Sublime Text3使用技巧
Dec 21 Javascript
原生js实现addclass,removeclass,toggleclasss实例
Nov 24 Javascript
AngularJS过滤器filter用法分析
Dec 11 Javascript
AngularJS获取json数据的方法详解
May 27 Javascript
JavaScript中引用vs复制示例详析
Dec 06 Javascript
js如何获取访问IP、地区、当前操作浏览器
Jul 23 Javascript
微信小程序实现多行文字超出部分省略号显示功能
Oct 23 Javascript
构建大型 Vue.js 项目的10条建议(小结)
Nov 14 Javascript
微信小程序实现锚点跳转
Nov 23 Javascript
Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法
Dec 25 Vue.js
JavaScript Tab菜单实现过程解析
May 13 #Javascript
JQuery事件冒泡和默认行为代码实例
May 13 #jQuery
element中el-container容器与div布局区分详解
May 13 #Javascript
Node Mongoose用法详解【Mongoose使用、Schema、对象、model文档等】
May 13 #Javascript
Node Express用法详解【安装、使用、路由、中间件、模板引擎等】
May 13 #Javascript
Node 模块原理与用法详解
May 13 #Javascript
JavaScript oncopy事件用法实例解析
May 13 #Javascript
You might like
php socket方式提交的post详解
2008/07/19 PHP
md5 16位二进制与32位字符串相互转换示例
2013/12/30 PHP
PHP扩展迁移为PHP7扩展兼容性问题记录
2016/02/15 PHP
php使用Jpgraph创建折线图效果示例
2017/02/15 PHP
PHP Trait功能与用法实例分析
2020/06/03 PHP
IE7中javascript操作CheckBox的checked=true不打勾的解决方法
2009/12/07 Javascript
javascript中用星号表示预录入内容的实现代码
2011/01/08 Javascript
用jquery.sortElements实现table排序
2014/05/04 Javascript
js实现分享到随页面滚动而滑动效果的方法
2015/04/10 Javascript
Javascript中prototype属性实现给内置对象添加新的方法
2015/05/14 Javascript
javascript实现表格增删改操作实例详解
2015/05/15 Javascript
js获取iframe中的window对象的实现方法
2016/05/20 Javascript
轻松掌握JavaScript策略模式
2016/08/25 Javascript
jQuery实现简单的网页换肤效果示例
2016/09/18 Javascript
canvas实现刮刮卡效果
2017/03/14 Javascript
vue将后台数据时间戳转换成日期格式
2019/07/31 Javascript
微信小程序webview与h5通过postMessage实现实时通讯的实现
2019/08/20 Javascript
如何在JS文件中获取Vue组件
2020/09/16 Javascript
Python编程实现线性回归和批量梯度下降法代码实例
2018/01/04 Python
解决Pandas to_json()中文乱码,转化为json数组的问题
2018/05/10 Python
PyCharm配置mongo插件的方法
2018/11/30 Python
Python数据类型之Tuple元组实例详解
2019/05/08 Python
python2和python3实现在图片上加汉字的方法
2019/08/22 Python
科沃斯机器人官网商城:Ecovacs
2016/08/29 全球购物
毕业生机械建模求职信
2013/10/14 职场文书
房地产出纳岗位职责
2013/12/01 职场文书
管道维修工岗位职责
2013/12/27 职场文书
艺人经纪人岗位职责
2014/04/15 职场文书
社会调查研究计划书
2014/05/01 职场文书
普通党员四风问题对照检查材料
2014/09/27 职场文书
专题组织生活会思想汇报
2014/10/01 职场文书
2014年信用社工作总结
2014/11/25 职场文书
2015年社区精神文明工作总结
2015/05/26 职场文书
2015年高中班级工作总结
2015/07/21 职场文书
关于MySQL中的 like操作符详情
2021/11/17 MySQL
一条慢SQL语句引发的改造之路
2022/03/16 MySQL