NaN 分配有 innerHTML

Posted

技术标签:

【中文标题】NaN 分配有 innerHTML【英文标题】:NaN assigned with innerHTML 【发布时间】:2013-08-28 08:13:49 【问题描述】:

在将每个int 转换为int 后,我尝试将innerhtml 值添加到另一个innerHTML,然后将总数分配给另一个innerhtml,以便可以使用javascript 打印出来

我尝试了parseIntparseFloat,但对我来说没有用。

实际上,在我将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。 嗯,firsec是什么元素,它们是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的主要内容,如果未能解决你的问题,请参考以下文章

通过使用 pandas 在时间序列中在先前的 NaN 之间分配值来回填值

为啥要将双精度值分配给双精度值?导致 NaN

如何在熊猫中的 NaN 值之间平均重新分配值?

在C中识别和分配+ NaN和-NaN

NaN 和 None 有啥区别?

为啥 NaN = !NaN 返回真?