不是 39500 输出,而是 500。有人可以帮助我吗,我希望如果 gw 达到 0,墙上就不应该再有 -500。
我使用了我的代码,但它不起作用。 HTML
<li><b>Infantry: </b><span id="gw">40000</span></li>
<p class="fort"><b>Fort: </b><span id="wall">1000</span></p>
<button class="troops" onclick="send()">SEND TROOPS</button>
JS
function send(){
var a = document.getElementById('gw').innerHTML;
var b = 500;
var c = a-b;
var label = document.getElementById('wall');
label.innerHTML = parseInt(label.innerHTML) - b;
var label = document.getElementById('gw');
label.innerHTML = parseInt(label.innerHTML) - c;
}
最佳答案
您的主要问题是您正在执行 var c = a-b;
,b
是一个数字,但 a
是一个字符串(Element.innerHTML
) - 没有对该值执行 parseInt(value, radix)
...并且其中还有其他数学减法困惑...
相反:
// Helper function to set to 0 a value lower than 0
function zeroMin(val) {
return parseInt(val, 10) < 0 ? 0 : val;
}
function send() {
var EL_gw = document.getElementById('gw'),
EL_wa = document.getElementById('wall'),
gw = parseInt(EL_gw.innerHTML, 10),
wa = parseInt(EL_wa.innerHTML, 10),
hitVal = 500;
// Subtract
gw -= hitVal;
wa -= hitVal;
// fix to 0
gw = zeroMin(gw);
wa = zeroMin(wa);
EL_gw.innerHTML = gw;
EL_wa.innerHTML = wa;
}
<b>Infantry:</b> <span id="gw">40000</span> <br>
<b>Fort:</b> <span id="wall">1000</span> <br>
<button class="troops" onclick="send()">SEND TROOPS</button>
如果您想在任何值达到 0 时停止任何进一步的操作
function send() {
var EL_gw = document.getElementById('gw'),
EL_wa = document.getElementById('wall'),
gw = parseInt(EL_gw.innerHTML, 10),
wa = parseInt(EL_wa.innerHTML, 10),
hitVal = 500;
if (gw <= 0 || wa <= 0) return; // Do nothing if any is <= 0
// else...
gw -= hitVal;
wa -= hitVal;
EL_gw.innerHTML = gw;
EL_wa.innerHTML = wa;
}
<b>Infantry:</b> <span id="gw">40000</span>
(will stop decreasing if FORT energy is 0 and vice-versa)<br>
<b>Fort:</b> <span id="wall">1000</span> <br>
<button class="troops" onclick="send()">SEND TROOPS</button>
关于javascript - JS 未显示错误结果已更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44401589/