JavaScript operator +无法正常工作

时间:2013-11-25 17:14:16

标签: javascript html

在这个简单的代码中需要一些帮助,如果我们输入例如3的“工作经验”的值和工资“1000”的条件,工资应该加上初始工资的10%,所以结果应该是“ 1100“但在我的公式中,它显示的结果像1000250,我观察到如果我将符号”+“更改为” - “它正确显示”900“,我做错了什么?

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>');

此外,如果我使用薪水作为“工资= 1000”的防御价值;该程序没有问题..等待一些答案,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>

3 个答案:

答案 0 :(得分:2)

JavaScript看到一些值从输入框中取为文本字符串而不是数值,并简单地连接起来。

如果您正在从输入框中读取值并想要在等式中使用它,则需要先通过parseInt()运行它。 e.g。

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

或者如果你想使用十进制值(浮点数),你需要通过parseFloat()

运行它
var salary = parseFloat(nameSalary.value);

将radix(10)作为第二个参数传递给parseInt()将阻止使用ECMAScript小于版本5的旧浏览器将以0开头的数字解释为八进制值。

答案 1 :(得分:1)

将您的输入解析为int(如果需要小数,则将其解析为浮点数!),它将作为字符串读取,从而连接。

var salary = parseInt(nameSalary.value);
var age = parseInt(nameAge.value);

答案 2 :(得分:0)

要从表单字段中获取数字,必须将其转换为数字,最快的方法是从该变量中减去零。

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

你的工资“1000”将产生一个(int)1000,然后是* 10 = 10000然后/ 100 = 100,并加到原来的1000总和,以赚取1100.

您可以尝试使用函数或原型来为您完成腿部工作,

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

然后你可以简单地...... increase_1=salary+(salary.percent(10));