为什么JavaScript楼层数学代码返回nan?

为什么JavaScript楼层数学代码返回nan?,javascript,math,floor,Javascript,Math,Floor,不幸的是,我得到了$NaN span的内容是0,你知道,没有什么特别的,我一定是在做傻事,所以我完全糊涂了 谢谢。innerHTML返回一个字符串。字符串不能.floor编辑。您必须先parseInt()。显示的代码不完整,无法跟踪。但我假设NaN首先被传递到Floor()。将有效的数字/数字字符串传递到floor()以使其正常工作。错误在问题中未显示的代码逻辑中 编辑: 查看代码后,很明显问题是由于错误的赋值操作造成的。如果调用了“If”部分,则一切正常,但如果调用了“else”部分,则从未创

不幸的是,我得到了$NaN

span的内容是
0
,你知道,没有什么特别的,我一定是在做傻事,所以我完全糊涂了


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

显示的代码不完整,无法跟踪。但我假设NaN首先被传递到Floor()。将有效的数字/数字字符串传递到floor()以使其正常工作。错误在问题中未显示的代码逻辑中

编辑:

查看代码后,很明显问题是由于错误的赋值操作造成的。如果调用了“If”部分,则一切正常,但如果调用了“else”部分,则从未创建或分配“num”值,导致其为NaN。要解决此问题,我建议执行以下操作:

更改此项:

var num = Math.floor(document.getElementById("num").innerHTML);
document.getElementById("num").innerHTML = num+1;
}
else{
document.getElementById("num").innerHTML = num-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;
}

您的完整代码显示了-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;
}
那么什么是
未定义-1
?嗯,它是
NaN
!为什么?因为
num
是在if中设置的,而不是在else中设置的


你怎么修理它?将
var num
行移到if之外

但是为什么我在-1部分只得到$NaN?我忘了在原来的问题中说,但是num+1起作用了!我刚刚尝试了
parseInt(document.getElementById(“num”).innerHTML)。但是它仍然返回NaN,所以不要连锁调用并开始检查单个元素
x=document.getElementById('num')
。那有什么回报吗
y=x.innerHTML
,是否返回任何内容,等等……不正确。JavaScript在这种情况下会自动转换;您不需要先调用
parseInt()
。在JavaScript控制台中输入以下内容:
Math.floor(7.3)
(产生7)然后
Math.floor('7.3')
(也产生7)。这就是我所想的@EthanBrown,但是我应该如何解决nan问题呢?因为
innerHTML
是nan。如果你要发布代码,它应该是有效的代码……If在哪里?美元是从哪里来的?你能在那里抛出一些
console.log
语句来看看你得到了什么,因为你所做的没有本质上的错误。我会这样做:
var elt=document.getElementById('num');控制台日志(elt);var numStr=elt.innerHTML;console.log(numStr)。然后答案应该变得清晰。这是谢谢,我已经编辑了我的答案,包括问题和它的修复。
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;
}