Potrzebujesz pomocy w tym prostym kodzie, jeśli wprowadzimy wartość "doświadczenia zawodowego" na przykład 3, a wynagrodzenie "1000" przez stan, wynagrodzenie powinno dodać 10% do początkowego wynagrodzenia, więc wynik powinien być "1100", ale wynik powinien być "1100" W mojej formule pokazuje wynik jak 1000250, obserwowałem, jeśli zmieniam symbol "+" do "-" pokazuje prawidłowo "900", co robię źle?

if (age>=3 && age<10) {
    var increase_1;
    var salary_2;
    increase_1=(salary*10)/100;
    salary_2=salary+increase_1;

    document.write('<h4>'  +'Proceeding from work experience the new salary was increase by 10%:\t'+ +salary_2+  '<\h4>');

Również jeśli używam wynagrodzenia wartość bronionowa, taka jak "wynagrodzenie = 1000;" Program działa bez problemu .. Czekam na niektóre odpowiedzi, thx

<html>
    <head>
    </head>    
    <script>    
        function doStuff()
        {
            var nameAge = document.getElementById("ageInput");
            var age = nameAge.value;
            var nameSalary = document.getElementById("salaryInput");
            var salary = nameSalary.value;                    
            document.write('<h2>' +'Age experience:\t'+ +age+ '<\h2>');

            document.write('<h2>' +'Starting salary ($):\t'+ +salary+ '<\h2>');

            if (age>=3 && age<10) {
                var increase_1;
                var salary_2;
                increase_1=(salary*10)/100;
                salary_2=salary+increase_1;                               
                document.write('<h4>'  +'Proceeding from work experience the new salary was increase by 10%:\t'+ +salary_2+  '<\h4>');
                        }      
            else if (age>=10 && age<20){
                var increase_2;
                var salary_3;
                increase_2=(salary*25)/100;
                salary_3=salary+increase_2;
                document.write('<h4>' +'Proceeding from work experience the new salary was increase by 25%:\t'+ +salary_3+  '<\h4>');
            }
            else if (age>=20){                                
                document.write('<h4>' +'Proceeding from work experience you get a prize:'+  '<\h4>');
                document.write('<img src="http://3.bp.blogspot.com/-2T_AGEs19_4/T_c2ERHsJeI/AAAAAAAIK9E/MGAQAa9ppDE/s800/2013-Mercedes-G-Class-AMG-011.jpg">');
            }
            else  {
                document.write('<h4>' +'Proceeding from work experience the  salary is:\t' +salary+'<\h4>');    
            }
        }
    </script>
    <h1>Please enter your work experience(years)</h1>
    <input id="ageInput" type="text">
    <h1>Please enter your salary($)</h1>
    <input id="salaryInput" type="text">      
    <input type="button" value="Submit" onClick="doStuff()">      
</html>
2
Chris 25 listopad 2013, 21:14

3 odpowiedzi

Najlepsza odpowiedź

Przelicz swoje dane wejściowe na int (lub pływak, jeśli chcesz odznaczenia!), Czytanie jako ciąg, w ten sposób włączanie.

var salary = parseInt(nameSalary.value);
var age = parseInt(nameAge.value);
1
Sterling Archer 25 listopad 2013, 17:18

JavaScript widzi to niektóre wartości, które są pobierane z pola wejściowego jako ciągów tekstu, a nie wartości numerycznych, a prostych ich powiązania.

Jeśli czytasz wartość z pola wejściowego i chcesz użyć go w równaniu, musisz najpierw uruchomić go parseint (). na przykład

var age = parseInt(nameAge.value, 10);

Lub jeśli chcesz użyć wartości dziesiętnych (pływaków), musisz uruchomić go przez parsefloat ()

var salary = parseFloat(nameSalary.value);

Przekazanie radix (10), ponieważ drugi parametr do pardezy () uniemożliwi starsze przeglądarki, które wykorzystują ECMASCREPT Mniej niż wersja 5 z numerów interpretujących, zaczynając od wartości 0 jako wartości oktkowania.

2
Chris Wheeler 25 listopad 2013, 17:40

Aby uzyskać numeryczny z pola formularza, musisz go przekonwertować na numer, najszybszy sposób na to, aby odejść zero z tej zmiennej.

salary-=0;
increase_1=salary+((salary*10)/100);
salary_2=salary+increase_1;

Twoja pensja "1000" spowoduje, że (int) 1000 jest następnie * 10 = 10000, a następnie / 100 = 100 i dodano do pierwotnej sumy 1000, aby wykonać 1100.

Możesz spróbować użyć funkcji lub prototypu, aby wykonać pracę nóg,

Number.prototype.percent = function(p){
    return ((this-0)*p)/100;
} 

Wtedy możesz po prostu ... increase_1=salary+(salary.percent(10));

0
Mark Giblin 25 listopad 2013, 20:09