Avatar billede shjorth Nybegynder
06. marts 2011 - 15:04 Der er 5 kommentarer og
1 løsning

Hente value fra div og ligge til

Hejsa.

Jeg har en div -> <div id='noget'>1,234</div>.
Jeg vil gerne med javascript kunne noget i stil med:
opdaterDiv(noget,5678);

Således at den opdaterer "noget" så den kommer til at indeholde: 6,912.

Læg mærke til nummer formatet. Det er altså ikke 1234, men 1,234 (amerikansk nummerering).

Det må meget gerne kunne laves med jQuery.

Håber der er nogen der har et bud :)

Takker
Avatar billede tjens Nybegynder
06. marts 2011 - 18:17 #1
Her er et bud mere.

Demoen kører med 2 decimaler, hvis der er decimaler, og indeholder en alternativ rutine, hvis der skal køres med dansk format.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
<title>Number format </title>
<style type="text/css">
body        {
    font-family: sans-serif;
}
.numberDiv {
    border: 2px solid gold;
    padding: 20px;
    background-color: LemonChiffon ;
    display: table-cell;
    width: 300px;
    text-align: center;
}
.cell {
    display: table-cell;
    padding: 20px;
    width: 300px;
    text-align: right;
}
</style>
<script type="text/javascript">

function AddToDiv(id, value) {
    var no = parseFloat( document.getElementById(id).firstChild.nodeValue.replace(/,/g,'') );
    no += value;
    document.getElementById(id).firstChild.nodeValue = FormatNumber(no, ',', '.') ;
}

function AddToDivDK(id, value) {
    var no = parseFloat( document.getElementById(id).firstChild.nodeValue.replace(/\./g,'').replace(',','.') );
    no += value;
    document.getElementById(id).firstChild.nodeValue = FormatNumber(no, '.', ',') ;
}

function FormatNumber(no, Tsep, Dsep) {
    parts = no.toString().split('.');
    return AddCommas(parts[0], Tsep) + (parts.length > 1 ? (Dsep + parseFloat('.' + parts[1]).toFixed(2).split('.')[1] ) : '');
}

function AddCommas(no, Tsep) {
    if (no.length > 3) {
        return AddCommas(no.substr(0, no.length - 3), Tsep ) + Tsep +  no.substr(no.length - 3);
    }
    return no;
}

</script>
</head>
<body>
    <p>
        <div class="cell">
            <input type="button" value="Add To Number" onclick="AddToDiv('numberDiv1', 123456789)">
        </div>
        <div id="numberDiv1" class="numberDiv">
            123,456,789
        </div>
    </p>
    <p>
        <div class="cell">
            <input type="button" value="Add To Number (2 decimals)" onclick="AddToDiv('numberDiv2', 123456789.87)">
        </div>
        <div id="numberDiv2" class="numberDiv">
            123,456,789.87
        </div>
    </p>
    <p>
        <div class="cell">
            <input type="button" value="Læg til heltal" onclick="AddToDivDK('numberDiv3', 123456789)">
        </div>
        <div id="numberDiv3" class="numberDiv">
            123.456.789
        </div>
    </p>
    <p>
        <div class="cell">
            <input type="button" value="Læg til decimaltal" onclick="AddToDivDK('numberDiv4', 123456789.87)">
        </div>
        <div id="numberDiv4" class="numberDiv">
            123.456.789,87
        </div>
    </p>
</body>
</html>
Avatar billede olsensweb.dk Ekspert
06. marts 2011 - 17:20 #2
jeg kan ikke hjælpe med en jquery løsning, men her er et bud med std js

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
      <title></title>
  </head>
  <body>
http://phpjs.org/functions/number_format:481<br />
http://php.net/manual/en/function.number-format.php<br />
(det anbefalet at tage number_format ned lokalt)<br />
<script type="text/javascript" src="https://github.com/kvz/phpjs/raw/master/functions/strings/number_format.js"></script>
<script type="text/javascript">
//<![CDATA[
    function opdaterDiv(id, val){
        elm = document.getElementById(id);     
        elmvalue = elm.innerHTML;
        elmvalue = elmvalue.replace(/\,/g,''); // fjerner tusinde separator
        newvalue = parseFloat(elmvalue) + parseFloat(val);     
        elm.innerHTML = number_format(newvalue); // formaterer output til US format
    }
//]]>
</script>
      <div id="noget">
        1,234
      </div>
      <script type="text/javascript">
//<![CDATA[
      opdaterDiv("noget", 5678);
      //]]>
      </script>
  </body>
</html>
Avatar billede shjorth Nybegynder
06. marts 2011 - 18:40 #3
Simpelthen fantastisk. Har brugt en helvedes masse tid på at finde det der :)

Takker
Avatar billede shjorth Nybegynder
06. marts 2011 - 18:41 #4
ronols -> Ligger du et svar ? :)
Avatar billede olsensweb.dk Ekspert
06. marts 2011 - 19:17 #5
selv tak
Avatar billede olsensweb.dk Ekspert
07. marts 2011 - 17:15 #6
jeg ville lige prøve at lave min function med jquery, den blev lidt kortere, og jeg fik leget lidt med jquery

 function opdaterDiv(id, val){        
var mycontent = $('#'+id).html().replace(/\,/g,''); // fjerner tusinde separator       
$('#'+id).html(number_format(parseFloat(mycontent) + parseFloat(val))); // formaterer output til US format       
    }   


husk at includerer jquery.js og number_format.js
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester