NaN作为函数结果而不是必需的整数出现问题

Issues with NaN as function result instead of necessary integer

本文关键字:整数 问题 函数 结果 NaN      更新时间:2024-04-30

这篇文章是我之前关于JS跨度值的文章的延续。在下面的几行中,当我在Chrome中打开Javascript控制台时,我会在标签的末尾看到我的值。假设他们分别是20岁和10岁。然而,这些值不在实际的html代码中(如下所示)。在我的javascript函数中,我只是试图"提取"span值,对它们进行除法,然后返回一个值。我的结果一直是"NaN"。我需要在某个地方对函数进行类型转换以返回数值吗?

注意:值是从历史记录"PI"中读取的

<span id ="LineSpeedGE" class='PIData' data-tag='G2LineSpeedGE'></span> (value of 20)
<span id ="AimPsSpd"    class='PIData' data-tag='G2rCurrentAimPsSpd'></span> (value of 10)

JS函数:

 function divide(n1,n2)
 { ans = n1/n2;
     document.write(" "+ans+"<BR>");    
     return ans;
 }
 var a = parseInt($("LineSpeedGE.PIData[data-tag]").data("tag"), 10);
 var b = parseInt($("AimPsSpd.PIData[data-tag]").data("tag"), 10);
divide (a, b);

我得到的结果是NaN,而不是预期的"2"。如果我在变量中插入正则整数,那么实际的除法就可以了。我似乎很难"捕获"在html代码中不可见的跨度的实际值。我怀疑数据类型有冲突?

这是我最初文章的链接:如果这看起来很复杂,将span值存储到javascript变量中以供参考。

G2LineSpeedGE不是数字,G2rCurrentAimPsSpd也不是。

<span id ="LineSpeedGE" class='PIData' data-tag='42'></span>将起作用。

首先,您的选择器是错误的。

$("LineSpeedGE.PIData[data-tag]")

这将查找名为LineSpeedGE<LineSpeedGE/>)的元素。你可能想要:

$("#LineSpeedGE.PIData[data-tag]")

#使其搜索ID(如果您按ID搜索,则不需要.PIData[data-tag])。

此外,data-tag值不是数字。它们是G2LineSpeedGEG2rCurrentAimPsSpd,它们不是数字。

您的选择器错误,因此没有返回任何元素。

$("LineSpeedGE.PIData[data-tag]")

它缺少#,所以您正在寻找一个名为LineSpeedGE的元素,而不是id。

$("#LineSpeedGE.PIData[data-tag]")

AimPsSpd也是如此。缺少#

此外,G2LineSpeedGE是一个字符串,而不是一个数字,因此在运行parseInt时也会产生NAN。