Hàm number_format() trong PHP giúp bạn khá nhiều việc như định dạng lại số, định dạng tiền tệ… Hàm này là hàm khá thông dụng đối với các bạn làm site thương mại điện tử. Hôm nay, mình giới thiệu với các bạn thêm một hàm có chức năng tương tự bằng Javascript có chức năng tương tự.
[code lang=”js”] function number_format( number, decimals, dec_point, thousands_sep ) {
// http://kevin.vanzonneveld.net
// + original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + bugfix by: Michael White (http://crestidg.com)
// + bugfix by: Benjamin Lupton
// + bugfix by: Allan Jensen (http://www.winternet.no)
// + revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
// * example 1: number_format(1234.5678, 2, ‘.’, ”);
// * returns 1: 1234.57
var n = number, c = isNaN(decimals = Math.abs(decimals)) ? 2 : decimals;
var d = dec_point == undefined ? "," : dec_point;
var t = thousands_sep == undefined ? "." : thousands_sep, s = n < 0 ? "-" : "";
var i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", j = (j = i.length) > 3 ? j % 3 : 0;
return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n – i).toFixed(c).slice(2) : "");
}
[/code]
Các sử dụng tương tự như PHP nhé.
Nguyen Khanh Hung says
Cool ! :D
Vnalazy says
Mình đang học về PHP, mình vẫn chưa hình dung ra ứng dụng của JavaScript trong thiết kế website lắm.
Nguyễn Duy Nhân says
Hàm này giúp bạn xử lý số được dễ dàng hơn, đặc biệt là các yêu cầu tính toán(hay gặp ở TMĐT). Thay vì phải reload lại trang để tính lại số tiền sau đó dùng hàm number_format của PHP để hiển thị dạng tiền tệ (ví dụ 1.500.000 VNĐ) bạn có thể sử dụng hàm JS này để tính toán và hiển thị luôn.
Cách này giúp tiết kiệm 1 lần request cũng như tiết kiệm xử lý trên server đồng thời kết quả cũng hiển thị nhanh chóng và linh động mỗi khi người dùng nhập số.
Vnalazy says
:D, ra thế, nhưng nghe nói JS làm website nặng hơn nên khi dùng cần tính toán kỹ để đưa ra quyết định có nên dùng hay không ?
Nguyễn Duy Nhân says
Một đoạn script nhỏ không ảnh hưởng gì đến tốc độ tải trang đâu bạn. Với lại web nặng là do quá nhiều JS chứ không phải là do một đoạn JS nhỏ. Ngoài ra, JS là script chạy dưới client nên không ảnh hưởng đến web và server, nói cách khác nặng là do máy client yếu (quá).
Vnalazy says
tức là chỉ xử lý JS nằm ở máy tính của người dùng, giống như CSS phải không
Nguyễn Duy Nhân says
Chính xác :)
Peter Tran says
Đọc bài viết của bác lại nhớ hồi mới học PHP, không biết PHP có hàm number_format nên tự viết một hàm để định dạng tiền tệ, làm xong mới biết, thế mới ác chứ ;):x