我有一个表有几个包含简单数字的单元格(IE:1.00,1000.00,10000.00)。我正在尝试使用下面的“格式”功能格式化单元格内容。我已经在我的代码的不同区域成功使用了这个函数,但出于任何原因(我之所以在这里),当我尝试提供表格单元格的内容时,它不能像我预期的那样工作。
问题是我的单元格内容的类型是'object'而不是'number',所以它在if语句中滑动,然后将原始值返回给我。有没有办法可以强制数据为数字类型?我认为var n = new Number(cellText);
可以做到这一点,但是,typeof作为对象返回。困惑。
在globalize.js中:
Globalize.format = function( value, format, cultureSelector ) {
culture = this.findClosestCulture( cultureSelector );
if ( value instanceof Date ) {
value = formatDate( value, format, culture );
}
else if ( typeof value === "number" ) {
value = formatNumber( value, format, culture );
}
return value;
};
在我的页面中:
$(document).ready(function () {
$('td[globalize="true"]').each(function () {
var $this = $(this);
var cellText = $this.text();
if (cellText != null) {
var n = new Number(cellText);
var v = Globalize.formatNumber(n, _gloNum[0]);
$this.text(v);
}
})
});
答案 0 :(得分:5)
问题是我的单元格内容的类型是“对象”而不是 '编号'
当你这样做时:
new Number
您正在创建数字对象的 新 实例,这就是为什么它为您提供对象而不是数字。
有没有办法可以强制数据为数字类型?
var n = +(cellText);
或者
var n = Number(cellText);
答案 1 :(得分:4)
在JavaScript new Number
中返回Number个对象。请查看parseFloat
或parseInt
。
变化:
var n = new Number(cellText);
要
var n = Number(cellText);
或者
var n = parseFloat(cellText);
或者
var n = parseInt(cellText, 10);
取决于您的需求。
答案 2 :(得分:2)
new Number(cellText)
会返回Number
个对象,而不是number
原语。
改为使用parseInt
或parseFloat
。
var cellText = '12.34',
a = new Number(cellText), // 12.34, but a Number object
b = parseInt(cellText, 10), // 12
c = parseFloat(cellText); // 12.34
typeof a; // 'object'
a instanceof Number; // true
typeof b; // 'number'
typeof c; // 'number'
答案 3 :(得分:0)
typeof
是JavaScript中的错误。我建议您使用以下功能:
function typeOf(value) {
if (value === null) return "null";
else if (typeof value === "undefined") return "undefined";
else return Object.prototype.toString.call(value).slice(8, -1);
}