我有一个问题,当我运行我的函数“addMoney(amount)”(如下所示)时,它可以工作并显示以下内容:100 [object HTMLButtonElement]
我的问题是,有没有办法摆脱[对象HTMLButtonElement],同时在调用函数时保持moneyAmount的数字?另外,有没有办法多次调用该函数并相应地添加钱?由于它仅在我第一次调用它时才会起作用,因此使用相同或不同数量的金额不止一次地调用它.Amount显示的次数不会少于或不少于第一次显示的次数。
我的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 :(得分:1)
在JavaScript中,+ moneyAmount;
没有做任何事情。它会返回您看到的内容:[object HTMLButtonElement]
。
我想你想添加一些数字,但我还不完全清楚你想要实现的目标。你能详细说明一下吗?
克里斯
编辑: 感谢您澄清问题。
尝试更新您的功能:
function addMoney(amount) {
var oldBalance = document.getElementById('moneyAmount').value;
var newBalance = amount + oldBalance;
document.getElementById('moneyAmount').innerHTML = newBalance;
}
答案 1 :(得分:1)
元素内的文本被认为是文本节点,由于按钮节点没有其他子节点,因此按钮节点是第一个子节点。文本节点的值(在本例中为&#34; 0&#34;)是其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;}
答案 2 :(得分:0)
尝试通过 document.getElementById('moneyAmount')。innerHTML 查找值,并使用一些全局变量say total_value来存储检索到的值,然后为每个函数调用尝试将检索到的值添加到以前存储的值。