
本教程详细介绍了如何使用javascript实现动态货币汇率转换,并确保转换结果能正确应用于页面上的多个显示元素。文章着重解决了常见的开发陷阱,如仅更新第一个元素、重复转换导致数值错误等,通过引入`queryselectorall`、存储原始值和优化数据结构,提供了一套健壮且易于维护的解决方案,适用于需要实时更新多个价格显示的场景。
在现代Web应用中,动态货币汇率转换是一个常见需求,尤其是在电商或金融类网站。然而,在实现过程中,开发者常会遇到一些挑战,例如如何确保转换应用于页面上的所有相关元素,以及如何避免因重复转换已转换值而导致的累积错误。本文将详细讲解如何构建一个健壮的货币转换功能,解决这些常见问题。
在原始实现中,主要存在两个核心问题:
我们将通过以下步骤来构建一个功能完善的货币转换器。
首先,我们需要一个下拉选择框来选择货币,以及多个
<select name="coin" id="coin"> <option value="default" default>Select coin</option> <option value="eur">EUR</option> <option value="usd">USD</option> <option value="gbp">GBP</option> </select> <h1 class='priceCoin'>2</h1> <h1 class='priceCoin'>25</h1> <h1 class='priceCoin'>60</h1>
注意:
接下来是核心的JavaScript代码。
// cambio de moneda (货币转换)
function getCurrency() {
// 从CDN获取最新的欧元汇率数据
fetch('https://cdn.jsdelivr.net/gh/fawazahmed0/currency-api@1/latest/currencies/eur.json')
.then(res => res.json()) // 将响应解析为JSON
.then(data => {
crearMoneda(data); // 调用函数处理获取到的货币数据
})
.catch(error => console.error('获取货币数据失败:', error)); // 错误处理
}
// 页面加载时立即获取货币数据
getCurrency();
function crearMoneda(moneda) {
// 从API数据中提取关键汇率
// 假设API返回的结构是 { "eur": { "eur": 1, "usd": 1.1, "gbp": 0.85, ... } }
const eurRate = moneda.eur.eur; // 欧元对欧元汇率 (通常为1)
const usdRate = moneda.eur.usd; // 欧元对美元汇率
const gbpRate = moneda.eur.gbp; // 欧元对英镑汇率
// 获取货币选择下拉框和所有价格显示元素
const selectCoin = document.getElementById('coin');
const priceCoinsArr = document.querySelectorAll('.priceCoin'); // 使用 querySelectorAll 获取所有元素
// 存储价格的原始值。这是解决重复转换问题的关键。
// 这些值应该与HTML中h1标签的初始内容一致。
const initalVals = [2, 25, 60];
// 构建一个汇率对象,方便根据选择的货币代码访问汇率
const exchangeValues = {
"default": 1, // 默认选项,不进行转换或视为1:1
'eur': eurRate,
'usd': usdRate,
"gbp": gbpRate
};
// 监听货币选择下拉框的change事件
selectCoin.addEventListener('change', (event) => {
let coinSelected = event.target.value; // 获取用户选择的货币代码
// 遍历原始价格数组,并更新每个对应的显示元素
initalVals.forEach((value, index) => {
// 计算转换后的价格:原始值 * 对应货币的汇率
const convertedValue = value * exchangeValues[coinSelected];
// 将结果更新到对应的h1标签中
priceCoinsArr[index].innerHTML = convertedValue.toFixed(2); // 保留两位小数,提高可读性
});
});
}通过上述改进,我们成功解决了动态货币汇率转换中常见的两个问题:只更新单个元素和重复转换导致的数值错误。关键在于使用querySelectorAll获取所有目标元素,并维护一个独立的原始值数组,确保每次转换都基于原始数据进行计算。这种方法不仅提高了功能的准确性,也使得代码结构更加清晰和易于维护。
以上就是动态货币汇率转换与多元素更新教程的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号