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

JS跨函数获取两个输入值相乘返回NaN,如何正确访问对应值?

问题原因

  • 你声明的nrCoins、coinValue变量存储的是DOM元素节点对象,直接拿两个对象做乘法运算,结果必然是NaN,这是当前报错的核心原因。
  • 你计算total的代码是页面初始化阶段就同步执行的,此时用户还没有输入内容、也没有触发对应更新函数,本来就获取不到有效数值。
  • coinValuee函数中给coinValue.innerHTML赋值时拼接了$符号,就算后续你取该DOM的内容转数字,也会因为包含非数字字符转换失败。

解决思路

单独声明两个全局变量存储纯数字类型的硬币数量和硬币单价,每次更新其中一个值的时候,同步触发总金额的计算逻辑。

修正后代码

let coinName = document.getElementById("coinName");
let nrCoins = document.getElementById("nrCoins");
let inputName = document.getElementById("inputName");
let inputNr = document.getElementById("inputNr");
let inputValue = document.getElementById("inputValue");
let coinValue = document.getElementById("coinValue");
let total = document.getElementById("total");

// 新增两个全局变量存储纯数字数值
let coinCount = 0;
let singlePrice = 0;

// 新增总价计算逻辑
function updateTotal() {
  total.innerHTML = (coinCount * singlePrice).toFixed(2) + "$";
}

function coinNamer() {
     coinName.innerHTML = inputName.value;
     inputName.value = "";
}

function nrCoinss() {
     // 先把输入值存入全局变量,兼容空输入的情况默认赋值为0
     coinCount = inputNr.valueAsNumber || 0;
     nrCoins.innerHTML = coinCount;
     inputNr.value = "";
     // 数值更新后重新计算总价
     updateTotal();
}

function coinValuee() {
     // 先把输入值存入全局变量,兼容空输入的情况默认赋值为0
     singlePrice = inputValue.valueAsNumber || 0;
     coinValue.innerHTML = singlePrice + "$";
     inputValue.value = "";
     // 数值更新后重新计算总价
     updateTotal();
}

内容的提问来源于stack exchange,提问作者Damian

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 04:54:05