javascript - JS 函数调用显示奇怪的文本并且不能多次工作

标签 javascript html

我有一个问题,当我运行我的函数“addMoney(amount)”(如下所示)时,它起作用并显示以下内容:100[object HTMLButtonElement]

我的问题是,有没有办法在调用函数时删除 [object HTMLButtonElement],同时保留 MoneyAmount 中的数字?另外,有没有办法多次调用该函数并相应地添加资金?由于它仅在我第一次调用它时起作用,因此使用相同或不同金额的 MoneyAmount 多次调用它时,显示的金额不会多于或不少于第一次显示的内容。

我的 HTML:

<li class="item_shown" id="money">Shrill:  <button class="moneyButton" id="moneyAmount">0</button></li>

在 HTML 中调用函数:

<a class="button" onclick="javascript:addMoney('100');">Add 100 Money</a>

我的 JS 函数:

function addMoney(amount) {
document.getElementById('moneyAmount')
var newBalance = amount + moneyAmount;
document.getElementById('moneyAmount').innerHTML = newBalance;
} 

最佳答案

元素内的文本被视为文本节点,并且由于按钮节点没有其他子节点,因此是按钮节点的第一个子节点。文本节点的值(在本例中为“0”)是其nodeValue 属性的值。为 nodeValue 分配新值将更改显示的文本。因此,在您的情况下,以下代码应该有效:

function addMoney(amount) {
  var node = document.getElementById('moneyAmount');
  var textNode = node.childNodes[0];
  var moneyAmount = parseInt(textNode.nodeValue, 10);
  textNode.nodeValue = amount + moneyAmount;}

关于javascript - JS 函数调用显示奇怪的文本并且不能多次工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35228909/

相关文章:

javascript - 如何正确清理timbre.js

php - html/php 中的多色 TD?

javascript - 如何根据选择 Angular 动态设置输入控件的最小值和最大值

javascript - 尝试在计时器结束后停止计算点击次数

javascript - 在 maxlength-set 输入上粘贴时检测字符串长度

javascript - 获取结果未定义(Backbone.js)

javascript - 等待所有异步 Ajax 调用,以便页面完全加载

javascript - iPad - 在输入字段中输入时文本不可见(类型 ="text")

javascript - 如何在 D3 设计中添加悬停文本?

html - 为什么我可以更改表格 <thead> 的边框颜色和粗细,但不能更改背景颜色?