2017-02-14 139 views
0

数据属性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使用范围滑块设置。

+2

@vijayP通常是当有)'数据()'ATTR之间'混淆('不论那个问题请注意,在这种情况下,属性的第一部分是'date',而不是'data' –

+0

@RoryMcCrossan - 是的。没有正确阅读它..! – vijayP

+0

jQuery'.data'返回数据与前缀'data-'存储相同的方法或属性...为您的具体情况使用'.attr'来代替,并且不要纠正错字 –

回答

2

使用attr而不是data

var total_cost = $('.output--lisence-cost').attr('date-total-cost'); 
0

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

0

API reference for .data(key)说,这(重点mine):

返回中指定数据存储区中第一个元素的值由数据(名称,值)或HTML5数据 - * 属性设置的jQuery集合,

换句话说,它不会操纵该值将其转换为数字。

唯一的解决方案是首先不要插入NaN - 一旦出现,您根本无法恢复原始值。你怎么能?

> console.log(Number('Foo')); 
NaN 
> console.log(Number('Bar')); 
NaN 
> console.log(Number('Apples!')); 
NaN 
0

数据的返回值被视为字符串。我认为你正在尝试根据这个价值做一些调整。

尝试返回数据转换为数字通过:

+total_cost 

Number(total_cost) 
相关问题