NaN 分配有 innerHTML
Posted
技术标签:
【中文标题】NaN 分配有 innerHTML【英文标题】:NaN assigned with innerHTML 【发布时间】:2013-08-28 08:13:49 【问题描述】:在将每个int
转换为int
后,我尝试将innerhtml
值添加到另一个innerHTML
,然后将总数分配给另一个innerhtml
,以便可以使用javascript 打印出来
我尝试了parseInt
和parseFloat
,但对我来说没有用。
实际上,在我将innerHTML
转换为int
之后,我得到了“NaN”而不是数字。
这是我的代码:
var Sum = parseInt(document.getElementById('fir').innerHTML) +
parseInt(document.getElementById('sec').innerHTML);
setTimeout(function func()ch1.innerHTML=Sum;,2500);
现在函数func()
中最后一行的Sum
应该是一个整数,但不幸的是它不是,在我的情况下它等于“NaN”,这是为什么呢?
编辑: 关于冷杉和秒的一切
<body>
<h1 id="fir"></h1>
<h2 id="sec"></h2>
<script>
var x = document.getElementById("fir")
x.style.position = "absolute";
x.style.left = 770;
x.style.top = 315;
var z = document.getElementById("sec")
z.style.position = "absolute";
z.style.left = 930;
z.style.top = 315;
setTimeout(function a()x.innerHTML=Math.floor((Math.random()*10)+1);,1000);
setTimeout(function b()z.innerHTML=Math.floor((Math.random()*10)+1);,2000);
</script>
</body>
【问题讨论】:
'fir' 和 'sec' 是什么类型的元素?使用console.log()
打印出innerHTML。
嗯,fir
和sec
是什么元素,它们是input
元素吗?如果是这种情况,您应该使用他们的value
属性而不是innerHTML
。
“实际上,在我将 innerHTML 转换为 int 之后,我得到的是 NaN 而不是数字” 太好了!这告诉你问题出在哪里:这两个中至少一个的 innerHTML
不能直接转换为 int。所以现在你只需要在调试器中查看这两个值,看看问题出在哪里。 (顺便说一句:NaN
在技术上是一个数字——尽管有这个名字!)
【参考方案1】:
尝试从数值开始
<h1 id="fir">0</h1>
<h2 id="sec">0</h2>
您正在对超时前的值求和,您应该将求和包装在一个函数中,并在设置值示例后立即调用它:
function applySUM()
var Sum = parseInt(document.getElementById('fir').innerHTML) +
parseInt(document.getElementById('sec').innerHTML);
ch1.innerHTML=Sum; //removed the timer to apply the calculation
setTimeout(function()
x.innerHTML=Math.floor((Math.random()*10)+1);
applySUM();
,1000);
setTimeout(function()
z.innerHTML=Math.floor((Math.random()*10)+1);
applySUM();
,2000);
【讨论】:
以上是关于NaN 分配有 innerHTML的主要内容,如果未能解决你的问题,请参考以下文章