0

这篇文章是我之前关于 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 代码中不可见的跨度的实际值。我怀疑数据类型发生冲突?

这是我原始帖子的链接:将跨度值存储到 javascript 变量中以供参考,如果这看起来很复杂。

4

3 回答 3

2

G2LineSpeedGE不是数字,也不G2rCurrentAimPsSpd是。

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

于 2012-07-30T18:10:19.433 回答
1

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

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

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

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

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

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

于 2012-07-30T18:12:10.840 回答
1

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

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

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

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

同样的事情适用于AimPsSpd. 缺少#

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

于 2012-07-30T18:12:35.637 回答