var num = Math.floor(document.getElementById("num").innerHTML);
document.getElementById("num").innerHTML = num+1;
}
else{
document.getElementById("num").innerHTML = num-1;
}
不幸的是,我得到了$ NaN!
跨度的内容是<span id="num">0</span>
,你知道,没什么特别的,我必须做一些蠢事,所以我完全糊涂了!
谢谢你。
答案 0 :(得分:0)
.innerHTML
返回一个字符串。字符串不能.floor
。您必须先parseInt()
。
答案 1 :(得分:0)
显示的代码不完整,无法跟踪。但我假设NaN正在传递给Floor()开始。将有效的数字/数字字符串传递给floor()以使其正常工作。错误在于问题中未显示的代码逻辑。
编辑:
查看代码之后很明显问题是由于错误的赋值操作造成的。如果调用'if'部分,一切都很好,但是如果调用'else'部分,则永远不会创建'num'或为其赋值,从而导致它为NaN。要解决这个问题,我建议你这样做:
改变这个:
if(document.getElementById("div").style.top === "40px"){
var num = Math.floor(document.getElementById("num").innerHTML);
document.getElementById("num").innerHTML = num+1;
}
else{
document.getElementById("num").innerHTML = num-1;
}
对此:
var num = Math.floor(document.getElementById("num").innerHTML);
if(document.getElementById("div").style.top === "40px"){
document.getElementById("num").innerHTML = num+1;
}
else{
document.getElementById("num").innerHTML = num-1;
}
答案 2 :(得分:0)
您的完整代码显示-1为什么不起作用
if (document.getElementById("div").style.top === "40px") {
var num = Math.floor(document.getElementById("num").innerHTML);
document.getElementById("num").innerHTML = num + 1;
} else {
document.getElementById("num").innerHTML = num - 1;
}
那么undefined - 1
是什么?那是NaN
!为什么?因为num
是在if中设置的,而不是else。
你是如何解决的?将var num
行移到if之外!