-1
var num = Math.floor(document.getElementById("num").innerHTML);
document.getElementById("num").innerHTML = num+1;
}
else{
document.getElementById("num").innerHTML = num-1;
}

不幸的是,我得到了 $NaN!

span 的内容是<span id="num">0</span>,你知道的,没什么特别的,而且我一定是在做一些愚蠢的事情,所以我完全糊涂了!

谢谢你。

4

3 回答 3

0

.innerHTML返回一个字符串。不能.floor编辑字符串。你必须parseInt()先。

于 2013-10-18T17:38:08.133 回答
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;
}
于 2013-10-18T17:46:28.967 回答
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 之外!

于 2013-10-18T17:56:44.010 回答