在这个简单的代码中需要一些帮助,如果我们输入例如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>
答案 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));