-6

我有这个 javascript 代码:

var id = $(this).attr("class");

var productname = $("td[title='product"+id+"']").html();
var newproductname = parseFloat(productname);

HTML:

<td class='drinkName' title='product10'>fanta</td>

输出是 newproductname 是 NaN 而不是 fanta... 有什么问题?我想将产品名称作为输出。

4

3 回答 3

5

因为fanta不是数字o_O

于 2013-08-25T13:14:53.683 回答
3

parsefloat 需要一个像 2.2 或 5 这样的数字。fanta 不是一个数字,因此NAN它代表not a number

于 2013-08-25T13:14:54.283 回答
2

这是因为您试图解析一个没有有效数字的字符串。因此,它不能转换为数字。这parseFloat就是返回的原因NaN

的参数parseFloat必须始终是包含有效数字的字符串。您无法转换fanta为浮点值,因为其中没有数字。

从这个文档-

parseFloat 是一个顶级函数,不与任何对象关联。

parseFloat 解析它的参数,一个字符串,并返回一个浮点数。如果遇到符号(+ 或 -)、数字 (0-9)、小数点或指数以外的字符,则返回该点之前的值并忽略该字符和所有后续字符。允许前导和尾随空格。

如果第一个字符不能转换为数字,则 parseFloat 返回 NaN。

出于算术目的,NaN 值不是任何基数的数字。可以调用isNaN函数判断parseFloat的结果是否为NaN。如果将 NaN 传递给算术运算,则运算结果也将为 NaN。

以下示例均返回3.14-

parseFloat("3.14");
parseFloat("314e-2"); 
parseFloat("0.0314E+2");
parseFloat("3.14more non-digit characters");

以下示例返回NaN-

parseFloat("FF2");
于 2013-08-25T13:15:41.610 回答