NaN作为函数结果的问题而不是必要的整数

时间:2012-07-30 18:07:08

标签: javascript jquery html casting

这篇文章是我之前关于JS的跨度值的一个延续。 在下面的行中,当我在Chrome中打开我的Javascript控制台时,我会在标签结束时看到我的值。可以说他们分别是20和10。但是这些值不在实际的html代码中(如下所示)。在我的javascript函数中,我只是试图“提取”跨度值,除以它们并返回一个值。我一直把'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代码中看不到的跨度的实际值。我怀疑数据类型是否发生冲突?

以下是我原始帖子的链接:Storing a span value into a javascript variable以供参考,如果这看起来很复杂。

3 个答案:

答案 0 :(得分:2)

G2LineSpeedGE不是数字,G2rCurrentAimPsSpd也不是。

<span id ="LineSpeedGE" class='PIData' data-tag='42'></span>将有效。

答案 1 :(得分:1)

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

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

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

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

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

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

答案 2 :(得分:1)

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

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

缺少#,因此您正在寻找名为LineSpeedGE的元素,而不是ID。

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

同样适用于AimPsSpd。缺少#

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