JS中点击rollBtn时如何将randNumber累加到playerOneNum原有数值上
代码错误点
你的代码无法实现数值累加是以下几个问题导致的:
- JavaScript内置数学对象首字母必须大写,你写的小写
math会直接触发引用错误,随机数生成逻辑根本执行不了 randNumber是通过计算得到的原始数字值,不是DOM元素,不存在textContent属性,强行取值只会得到undefined- 从DOM的
textContent取到的值默认是字符串类型,直接用+和数字相加会触发字符串拼接,不是数值加法 - 你算完
outcome之后没有把新值回写到DOM元素上,页面不会有任何显示更新 - 额外提醒:你现在选按钮用的是
.btn--new的选择器,这一般是「新游戏」按钮的类名,如果你要绑定的是掷骰子按钮,记得核对类名,别绑错元素
修正后可运行代码
// 请根据实际类名确认选中的是掷骰子按钮,这里以常见的.btn--roll为例 const rollBtn = document.querySelector('.btn--roll'); const playerOneNum = document.getElementById('current--0'); rollBtn.addEventListener('click', function() { // 生成1-6的骰点,如果你需要0-6的随机值,改成 Math.floor(Math.random() * 7) 即可 const randNumber = Math.floor(Math.random() * 6) + 1; // 将现有文本转为数字后再做累加,避免字符串拼接问题 const newTotal = Number(playerOneNum.textContent) + randNumber; // 将计算结果回写到DOM,更新页面显示 playerOneNum.textContent = newTotal; });
补充说明
- 如果初始加载时
current--0元素的文本为空,Number('')会转成0,不会影响首次累加的结果 - 所有从DOM文本内容里拿到的值做数值计算前,都要显式转成Number类型,避免隐式类型转换导致的异常结果
内容的提问来源于stack exchange,提问作者Yassin Vlogs
相关产品推荐
相关产品推荐

