这篇文章是我之前关于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以供参考,如果这看起来很复杂。
答案 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
值不是数字。它们是G2LineSpeedGE
和G2rCurrentAimPsSpd
,这些不是数字。
答案 2 :(得分:1)
您的选择器错误,因此您没有收到任何元素。
$("LineSpeedGE.PIData[data-tag]")
缺少#
,因此您正在寻找名为LineSpeedGE的元素,而不是ID。
$("#LineSpeedGE.PIData[data-tag]")
同样适用于AimPsSpd
。缺少#
同样G2LineSpeedGE
是一个字符串,而不是一个数字,因此在运行parseInt时也会产生NAN。