Avatar billede james_t_dk Juniormester
19. marts 2002 - 19:14 Der er 2 kommentarer og
1 løsning

0-løn Java script problem

Da vi nærmer os løn forhandlings tid (og da jeg er tillidsrepresentant) vil jeg gerne give mine kollegaer en ide om hvad firmaet syntes at de er værd. Til dette bruger jeg Forbrugerprisindekset (ja det er et ord). Koden har jeg skrevet i Java, men det kan ikke afvikles på firmaets maskiner (Java ikke installeret/spæret og låst så brugeren ikke kan ændre på det) derfor er jeg nu i gang med JavaScript (for første gang). Men jeg ved hvor det går galt. Det er min case (switch) sætning der altid ender i default.

Hvorfor? jeg kan ikke selv finde fejlen!

Her under finder i hele koden (ser sikkert forfærdeligt ud når det er klippet ind her, men det er måden jeg kan gøre det på). Koden er komplet, med HTML tags og alt andet.


<html>
<body>

<FORM NAME="loen0">
    <table>
        <TR>
            <TD COLSPAN=3>
                <BIG>
                    <B>
                        Indtast Løn information:
                    </B>
                </BIG>
            </TD>
        </TR>
        <TR>   
            <TD>
                1)
            </TD>
            <TD>
                Indtast det årstal du startede i dit nuværende job:
            </TD>
            <TD>
                <INPUT TYPE=text NAME=year SIZE=12 onChange="calculate()">
            </TD>
        </TR>
        <TR>
            <TD>
                2)
            </TD>
            <TD>
                Indtast din løn efter din første løn-diktat i dit nuværende job:
            </TD>
            <TD>
                <INPUT TYPE=text NAME=loen SIZE=12 onChange="calculate()">           
            </TD>
        </TR>
        <TR>
            <TD COLSPAN=3>
                <BIG>
                    <B>
                        <INPUT TYPE=button VALUE="Udregn 0 løn" onClick=""calculate()">
                    </B>
                </BIG>
            </TD>
        </TR>
        <TR>
            <TD>
                3)
            </TD>
            <TD>
                Din 0-løn er:
            </TD>
            <TD>
                <INPUT TYPE=text NAME=loen1 SIZE=12>, <INPUT TYPE=text NAME=index1 SIZE=12>               
            </TD>
        </TR>
    </table>
</FORM>


<SCRIPT LANGUAGE="JavaScript">

function calculate()
    {
        var year = document.loen0.year.value;
        var loen = document.loen0.loen.value;
       
        switch(year)
            {
                case 1980:
                    var indeks = 45.3;
                    break;
                case 1981:
                    var indeks = 51.2;
                    break;
                case 1982:
                    var indeks = 55.9;
                    break;
                case 1983:
                    var indeks = 59.8;
                    break;
                case 1984:
                    var indeks = 63.9;
                    break;
                case 1985:
                    var indeks = 67.0;
                    break;
                case 1986:
                    var indeks = 69.7;
                    break;
                case 1987:
                    var indeks = 72.0;
                    break;
                case 1988:
                    var indeks = 75.3;
                    break;
                case 1989:
                    var indeks = 78.7;
                    break;
                case 1990:
                    var indeks = 80.7;
                    break;
                case 1991:
                    var indeks = 83.0;
                    break;
                case 1992:
                    var indeks = 85.0;
                    break;
                case 1993:
                    var indeks = 85.7;
                    break;
                case 1994:
                    var indeks = 87.5;
                    break;
                case 1995:
                    var indeks = 89.3;
                    break;
                case 1996:
                    var indeks = 91.1;
                    break;
                case 1997:
                    var indeks = 93.3;
                    break;
                case 1998:
                    var indeks = 94.9;
                    break;
                case 1999:
                    var indeks = 97.2;
                    break;
                case 2000:
                    var indeks = 100.4;
                    break;
                default:
                    var indeks = 102.7;
                    break;
            }

        document.loen0.index1.value = indeks;

        if ((year > 1979) && (year < 2001) && (loen != Number.POSITIVE_INFINITY) && (loen != Number.NEGATIVE_INFINITY))
            {
                document.loen0.loen1.value = ((102.7*loen)/indeks);
            }
        else
            {
                document.loen0.loen1.value = "";
            }
    }
</SCRIPT>
</body>
</html>
Avatar billede james_t_dk Juniormester
19. marts 2002 - 19:16 #1
meningen er at man i felt 1 indtaster et årstal (1980-2000), det udløser et indeks, her efter indtaster man en løn beløb (felt 2) for det pågældende år og svaret er (felt 3) nutidslønne uden en reel lønstigning men der bare har fulgt inflation og pris stigninger.
Avatar billede james_t_dk Juniormester
19. marts 2002 - 20:48 #2
Har fundet fejlen:

case 1980:
                    var indeks = 45.3;
                    break;

Skulle være:

case '1980':
                    var indeks = 45.3;
                    break;
Avatar billede jakoba Nybegynder
20. marts 2002 - 08:16 #3
Jeg ville nok lave det i et array:

var fraAar = 1980;
var tilAar = 2001;

var loental = new Array( 45.3, 51.2, 55.9, 59.8, 63.9,
                        67.0, 69.7, 72.0, 75.3, 78.7,
                        80.7, 83.0, 85.0, 85.7, 87.5,
                        89.3, 91.1, 93.3, 94.9, 97.2,
                        100.4,102.7 );

for ( var i=loental.length-1; i>=0; i-- ) { //skal tælle nedad !
    loental[fraAar+i] = loental[i];
};


istedet for din case-sætning bliver det så:

        var aar = parseInt( year );
        var index = 0;
        if ( year < fraAar || year > tilAar ) {
            alert( "Sorry. det et ikke indlagt forbrugerprisindex for det år" );
        } else {
            index = loental[ aar ];
        }

mvh JakobA
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