将变量设置为数据属性值而不是NaN
问题描述:
数据属性date-total-cost
的值为100
。将变量设置为数据属性值而不是NaN
var total_cost = $('.output--lisence-cost').data('date-total-cost');
但是变量total_cost
回报NaN
如何设置的变量返回的数据字段的数量?
UPDATE ...
我也设置在下面的函数中的数据属性的值...
function Cost() { $('.output--lisence-cost').attr('data-total-cost',totalSeatsCost); }
了var totalSeatsCost
使用范围滑块设置。
答
使用attr
而不是data
var total_cost = $('.output--lisence-cost').attr('date-total-cost');
答
的total_cost
只会NaN
,如果你在它到位值是NaN
。如果你期望值被填充,那么值得研究设置值的代码是值得的。
这就是说,你可以使用的Javascript falsy自然强迫NaN
为默认值通过使用逻辑或操作员,像这样:
var total_cost = NaN; // $('.output--lisence-cost').data('date-total-cost');
console.log(total_cost || 100); // returns '100' if value was undefined/false/NaN
答
的API reference for .data(key)
说,这(重点mine):
返回中指定数据存储区中第一个元素的值由数据(名称,值)或HTML5数据 - * 属性设置的jQuery集合,。
换句话说,它不会操纵该值将其转换为数字。
唯一的解决方案是首先不要插入NaN
- 一旦出现,您根本无法恢复原始值。你怎么能?
> console.log(Number('Foo'));
NaN
> console.log(Number('Bar'));
NaN
> console.log(Number('Apples!'));
NaN
答
数据的返回值被视为字符串。我认为你正在尝试根据这个价值做一些调整。
尝试返回数据转换为数字通过:
+total_cost
或
Number(total_cost)
@vijayP通常是当有)'数据()'ATTR之间'混淆('不论那个问题请注意,在这种情况下,属性的第一部分是'date',而不是'data' –
@RoryMcCrossan - 是的。没有正确阅读它..! – vijayP
jQuery'.data'返回数据与前缀'data-'存储相同的方法或属性...为您的具体情况使用'.attr'来代替,并且不要纠正错字 –