如何将计算器求和结果格式化为瑞典克朗(SEK)货币格式?
解决方案
你的代码有几个关键问题导致货币格式没生效:
- 只读输入框的
onchange事件不会触发,因为用户无法修改它的内容,所以你写的格式化代码根本没执行; - 计算求和时直接把数字赋值给
summa.value,没做格式化处理; - HTML标签存在小错误:
<h2>Calculator/h2>未正确闭合,应该改成<h2>Calculator</h2>。
下面是修改后的完整代码:
<h2>Calculator</h2> <input type="text" id="number1" value="0" oninput="calculateSum()" /> <br> <input type="text" id="number2" value="0" oninput="calculateSum()" /> <br><br> <input type="text" readonly="readonly" id="summa" value="0" /> <script> function calculateSum() { // 获取输入值并转为数字,非数字/空值默认取0 const num1 = Number(document.getElementById('number1').value) || 0; const num2 = Number(document.getElementById('number2').value) || 0; const total = num1 + num2; // 将结果格式化为瑞典克朗货币格式 const formattedTotal = total.toLocaleString("sv-SE", { style: "currency", currency: "SEK", currencyDisplay: "symbol", maximumFractionDigits: 0 }); // 把格式化后的结果赋值给只读输入框 document.getElementById('summa').value = formattedTotal; } </script>
关键改动说明:
- 把
onchange换成oninput:输入内容时实时计算更新,不用等输入框失去焦点才触发; - 抽离计算逻辑为独立函数:让代码更清晰,后续修改也更方便;
- 完善数值处理:用
Number()转换输入值,搭配|| 0避免非数字输入导致计算结果为NaN; - 直接在计算后格式化结果:不再依赖只读输入框的事件,确保格式化逻辑一定会执行;
- 修复了HTML标签的闭合错误。
内容的提问来源于stack exchange,提问作者Hans Niklas
相关产品推荐
相关产品推荐

