You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将计算器求和结果格式化为瑞典克朗(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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 16:20:22