Avatar billede andreas13_fam Nybegynder
01. juni 2008 - 18:45 Der er 4 kommentarer og
1 løsning

Simpelt regnesystem

Jeg ønsker at have er simpelt regnesystem i JavaScript der skal fungere sådan.
Indtast point [Box1] Point
Du kan hjælpe fra [Box2] Point
Og Til [Box3] Point

Box1 skal være et input felt

I Box2 skal der stå det tal der vil komme hvis man gangede Box1 med 0,20 (Box1 x 0,20)
Hvis det tal man indtaster i Box1 er 25000 og der over skal der stå 5000 i Box2.

I Box3 skal der stå det tal der vil komme hvis man gangede Box1 med 5 (Box1 x 5)
Hvis det tal man indtaster i Box1 er 5000 og der over skal der stå uendelig i Box3.

Det vil være rigtig dejligt hvis tallene kunne blive delt op med et eller flere punktumer.
Avatar billede sherlock Nybegynder
01. juni 2008 - 20:05 #1
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<meta name="generator" content=
"HTML Tidy for Windows (vers 15 August 2007), see www.w3.org">
<script type="text/javascript">

function IsNumeric(sText)
{
  var ValidChars = "0123456789.";
  var IsNumber=true;
  var Char;
 
  sText = "" + sText;

  for (i = 0; i < sText.length && IsNumber == true; i++)
      {
      Char = sText.charAt(i);
      if (ValidChars.indexOf(Char) == -1)
        {
        IsNumber = false;
        }
      }
  return IsNumber;
}


function FormatNumber(num,decimalNum,bolLeadingZero,bolParens,bolCommas)
/**********************************************************************
    IN:
        NUM - the number to format
        decimalNum - the number of decimal places to format the number to
        bolLeadingZero - true / false - display a leading zero for
                                        numbers between -1 and 1
        bolParens - true / false - use parenthesis around negative numbers
        bolCommas - put commas as number separators.

    RETVAL:
        The formatted number!
**********************************************************************/
{
        if (isNaN(parseInt(num))) return "NaN";

    var tmpNum = num;
    var iSign = num < 0 ? -1 : 1;        // Get sign of number
   
    // Adjust number so only the specified number of numbers after
    // the decimal point are shown.
    tmpNum *= Math.pow(10,decimalNum);
    tmpNum = Math.round(Math.abs(tmpNum))
    tmpNum /= Math.pow(10,decimalNum);
    tmpNum *= iSign;                    // Readjust for sign
   
   
    // Create a string object to do our formatting on
    var tmpNumStr = new String(tmpNum);

    // See if we need to strip out the leading zero or not.
    if (!bolLeadingZero && num < 1 && num > -1 && num != 0)
        if (num > 0)
            tmpNumStr = tmpNumStr.substring(1,tmpNumStr.length);
        else
            tmpNumStr = "-" + tmpNumStr.substring(2,tmpNumStr.length);
       
    // See if we need to put in the commas
    if (bolCommas && (num >= 1000 || num <= -1000)) {
        var iStart = tmpNumStr.indexOf(".");
        if (iStart < 0)
            iStart = tmpNumStr.length;

        iStart -= 3;
        while (iStart >= 1) {
            tmpNumStr = tmpNumStr.substring(0,iStart) + "," + tmpNumStr.substring(iStart,tmpNumStr.length)
            iStart -= 3;
        }       
    }

    // See if we need to use parenthesis
    if (bolParens && num < 0)
        tmpNumStr = "(" + tmpNumStr.substring(1,tmpNumStr.length) + ")";

    return tmpNumStr;        // Return our formatted string!
}

function btnClick()
{
var box1 = document.getElementById("Box1");
var box2 = document.getElementById("Box2");
var box3 = document.getElementById("Box3");

  box2.innerHTML = "";
  box3.innerHTML = "";
  if (IsNumeric(box1.value))
  {
    box2.innerHTML = FormatNumber(box1.value * 0.20,2,false,false,true);
    if (box1.value > 5000)
        box3.innerHTML= "uendelig";
    else 
        box3.innerHTML = FormatNumber(box1.value * 5,2,false,false,true);
  }
}

</script>
<title></title>
</head>
<body>
<form>
  <input type="edit" id="Box1"><br>
  <span id="Box2"></span><br>
  <span id="Box3"></span><br>
  <input type="button" onclick="btnClick();" value="Beregn">
</form>
</body>
</html>
Avatar billede andreas13_fam Nybegynder
02. juni 2008 - 09:18 #2
Det ser godt ud men der skal byttes om på komma og punktum.
Der står 55,454.4
Der skulle gerne stå 55.454,4
Det ville være super hvis tallene bliv rundet ned. Så der bare stod 55.454

I box3 skal der stå uendelig hvis man indtaster i box1 5000 eller 5001 eller 5002 osv.
Lige nu står der uendelig hvis man indtaster i box1 alt over 5000.
Men det er vel simpelt at rette bare ændre 5000 til 4999 fx.
    box2.innerHTML = FormatNumber(box1.value * 0.20,2,false,false,true);
    if (box1.value > 5000)
ændres til
    box2.innerHTML = FormatNumber(box1.value * 0.20,2,false,false,true);
    if (box1.value > 4999)
så meget Java kan jeg da :)

I Box2 mangler reglen om hvis man indtaster 25000 eller 25001 eller 25002 osv. at der bliver ved med at stå 5000, reglen i box3 gælder stadig.
Avatar billede sherlock Nybegynder
02. juni 2008 - 13:25 #3
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<meta name="generator" content=
"HTML Tidy for Windows (vers 15 August 2007), see www.w3.org">
<script type="text/javascript">

function IsNumeric(sText)
{
  var ValidChars = "0123456789.";
  var IsNumber=true;
  var Char;
 
  sText = "" + sText;

  for (i = 0; i < sText.length && IsNumber == true; i++)
      {
      Char = sText.charAt(i);
      if (ValidChars.indexOf(Char) == -1)
        {
        IsNumber = false;
        }
      }
  return IsNumber;
}


function FormatNumber(num,decimalNum,bolLeadingZero,bolParens,bolCommas)
/**********************************************************************
    IN:
        NUM - the number to format
        decimalNum - the number of decimal places to format the number to
        bolLeadingZero - true / false - display a leading zero for
                                        numbers between -1 and 1
        bolParens - true / false - use parenthesis around negative numbers
        bolCommas - put commas as number separators.

    RETVAL:
        The formatted number!
**********************************************************************/
{
        if (isNaN(parseInt(num))) return "NaN";

    var comma = ",";
    var dot = ".";

    var tmpNum = num;
    var iSign = num < 0 ? -1 : 1;        // Get sign of number
   
    // Adjust number so only the specified number of numbers after
    // the decimal point are shown.
    tmpNum *= Math.pow(10,decimalNum);
    tmpNum = Math.round(Math.abs(tmpNum))
    tmpNum /= Math.pow(10,decimalNum);
    tmpNum *= iSign;                    // Readjust for sign
   
   
    // Create a string object to do our formatting on
    var tmpNumStr = new String(tmpNum);

    // See if we need to strip out the leading zero or not.
    if (!bolLeadingZero && num < 1 && num > -1 && num != 0)
        if (num > 0)
            tmpNumStr = tmpNumStr.substring(1,tmpNumStr.length);
        else
            tmpNumStr = "-" + tmpNumStr.substring(2,tmpNumStr.length);
       
    // See if we need to put in the commas
    if (bolCommas && (num >= 1000 || num <= -1000)) {
        var iStart = tmpNumStr.indexOf(dot);
        if (iStart < 0)
            iStart = tmpNumStr.length;

        iStart -= 3;
        while (iStart >= 1) {
            tmpNumStr = tmpNumStr.substring(0,iStart) + dot + tmpNumStr.substring(iStart,tmpNumStr.length)
            iStart -= 3;
        }       
    }

    // See if we need to use parenthesis
    if (bolParens && num < 0)
        tmpNumStr = "(" + tmpNumStr.substring(1,tmpNumStr.length) + ")";

    return tmpNumStr;        // Return our formatted string!
}

function btnClick()
{
var box1 = document.getElementById("Box1");
var box2 = document.getElementById("Box2");
var box3 = document.getElementById("Box3");

  box2.innerHTML = "";
  box3.innerHTML = "";
  if (IsNumeric(box1.value))
  {
    box2.innerHTML = FormatNumber(Math.round(box1.value * 0.20),0,false,false,true);
    if (Math.round(box1.value) > 25000)
      box2.innerHTML = FormatNumber(5000,0,false,false,true);
       
    if (Math.round(box1.value) >= 5000)
        box3.innerHTML= "uendelig";
    else 
        box3.innerHTML = FormatNumber(Math.round(box1.value) * 5,0,false,false,true);
  }
}

</script>
<title></title>
</head>
<body>
<form>
  <input type="edit" id="Box1"><br>
  <span id="Box2"></span><br>
  <span id="Box3"></span><br>
  <input type="button" onclick="btnClick();" value="Beregn">
</form>
</body>
</html>
Avatar billede andreas13_fam Nybegynder
02. juni 2008 - 16:30 #4
Det ser ud til at virker perfekt nu.
Læg et svar så for du dine point.
Avatar billede sherlock Nybegynder
02. juni 2008 - 21:24 #5
:)
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