Link to home
Start Free TrialLog in
Avatar of Bruce Gust
Bruce GustFlag for United States of America

asked on

How could I format this number as currency in Javascript?

Here's the currency function I want to use:

function number_format (number, decimals, dec_point, thousands_sep) {

    number = (number + '').replace(/[^0-9+-Ee.]/g, '');
    var n = !isFinite(+number) ? 0 : +number,
        prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
        sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
        dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
        s = '',
        toFixedFix = function (n, prec) {
            var k = Math.pow(10, prec);
            return '' + Math.round(n * k) / k;
        };
    // Fix for IE parseFloat(0.55).toFixed(0) = 0;
    s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
    if (s[0].length > 3) {
        s[0] = s[0].replace(/B(?=(?:d{3})+(?!d))/g, sep);
    }
    if ((s[1] || '').length < prec) {
        s[1] = s[1] || '';
        s[1] += new Array(prec - s[1].length + 1).join('0');
    }
    return s.join(dec);
}

/**
*	Usage: 	number_format(123456.789, 2, '.', ',');
*	result:	123,456.79
**/

Open in new window


Downright elegant!

Now, here's my challenge:

I'm sending a value to a <span> tag via JavaScript that looks like this:

function addAllocated(form) {
//var theForm = document.form;
var numRows = form.allocatedlistcount.value;
//alert("allocated: " + numRows);

var total = 0;

    for( var rowIndex = 1; rowIndex <= numRows; rowIndex++ ) {
        eval('allocated = form.allocated_'+rowIndex+'.value');
       // total += document.getElementsByName("allocated_" + rowIndex).value;
       //alert('row: '+rowIndex+'; total: '+total);
       total = total + allocated*1;
       total_allocated.innerHTML = '<span class=\"info\">$'+total+'</span>';
       }
}

Open in new window


I want to format that "total" as currency. But how do you pull off a function within a function?

Thoughts?
ASKER CERTIFIED SOLUTION
Avatar of Ken Butters
Ken Butters
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of Bruce Gust

ASKER

Ken, when I do this:

total_allocated.innerHTML = '<span class=\"info\">$'+total+'</span>';

I get a number.

When I do this:

   total_allocated.innerHTML = '<span class=\"info\">$'+number_format(total, 2, '.', ',')+'</span>';

I don't get anything.

What am I missing?
Never mind!

I got it!

Thanks so much!