2016-02-05 54 views
0

我有项“物品1花费$ 1”和“ITEM2花费$ 2”增加两个表单变量与计算和比较

我做了一个简单的表格,计算两者的总价格,但如果客户将购买超过50项(总项目=项目1 +项目2)我会给他50%的折扣,这意味着最终的价格将除以2但只有当我们的总数超过“50”。

我得到的价格被除以2,即使总数只有= 10!

这里的的jsfiddle: http://jsfiddle.net/2yTLp/225/

var x = document.getElementById("x"); 
 
var y = document.getElementById("y"); 
 
var d = document.getElementById("d"); 
 
var xstored = x.getAttribute("data-in"); 
 
var ystored = y.getAttribute("data-in"); 
 
setInterval(function(){ 
 
    if(x == document.activeElement){ 
 
    var temp = x.value; 
 
    if(xstored != temp){ 
 
     xstored = temp; 
 
     x.setAttribute("data-in",temp); 
 
     calculate(); 
 
    } 
 
    } 
 

 
    if(y == document.activeElement){ 
 
    var temp = y.value; 
 
    if(ystored != temp){ 
 
     ystored = temp; 
 
     y.setAttribute("data-in",temp); 
 
     calculate(); 
 
    } 
 
    } 
 
},50); 
 
function calculate(){ 
 
var total = x.value + y.value; 
 
if(total >= 50){ 
 
d.innerHTML = ((x.value * 1.00) + (y.value * 2.00))/2; 
 
} 
 

 
else{ 
 
d.innerHTML = (x.value * 1.00) + (y.value * 2.00); 
 
} 
 

 
} 
 
x.onblur = calculate; 
 
calculate();
#d{ 
 
    text-indent:20px; 
 
}
<h3>Calculate</h3> 
 
item1&nbsp;&nbsp;<input id="x" data-in="" type="number" /><br> 
 
<br> 
 
item2&nbsp;&nbsp;<input id="y" data-in="" type="number" /><br> 
 
<br> 
 
Please Pay and amount of <span id="d"></span>

它很容易,但不能弄明白。

Regards,

回答

2

您将连接字符串而不是总数。请将这些值转换为数字,并且完美地工作。见行说:

var x = document.getElementById("x"); 
 
var y = document.getElementById("y"); 
 
var d = document.getElementById("d"); 
 
var xstored = x.getAttribute("data-in"); 
 
var ystored = y.getAttribute("data-in"); 
 
setInterval(function(){ 
 
    if(x == document.activeElement){ 
 
    var temp = x.value; 
 
    if(xstored != temp){ 
 
     xstored = temp; 
 
     x.setAttribute("data-in",temp); 
 
     calculate(); 
 
    } 
 
    } 
 

 
    if(y == document.activeElement){ 
 
    var temp = y.value; 
 
    if(ystored != temp){ 
 
     ystored = temp; 
 
     y.setAttribute("data-in",temp); 
 
     calculate(); 
 
    } 
 
    } 
 
},50); 
 
function calculate(){ 
 
    //here you need to convert values to numbers 
 
    var total = Number(x.value) + Number(y.value); 
 
    if(total >= 50){ 
 
    d.innerHTML = ((x.value * 1.00) + (y.value * 2.00))/2; 
 
    } 
 

 
    else{ 
 
    d.innerHTML = (x.value * 1.00) + (y.value * 2.00); 
 
    } 
 

 
} 
 
x.onblur = calculate; 
 
calculate();
#d{ 
 
    text-indent:20px; 
 
}
<h3>Calculate</h3> 
 
item1&nbsp;&nbsp;<input id="x" data-in="" type="number" /><br> 
 
<br> 
 
item2&nbsp;&nbsp;<input id="y" data-in="" type="number" /><br> 
 
<br> 
 
Please Pay and amount of <span id="d"></span>

的解释是,如果您连接这样的:

var one = "10"; 
var two = "15"; 
var result = one + two ; // result string "1015" 

,但如果更改为数字的总和是完美

var one = "10"; 
var two = "15"; 
var result = Number(one) + Number(two) ; // result int 25 
+0

是这就是它,谢谢你的伙伴 –

+0

不客气:)接受答案时,你可以做到这一点。祝你好运! –

1

这是非常直接和简单的
你的代码是正确的,除了一件事,你没有使用parseInt函数
目前你是串联的值,而不是加入

所以才将这段代码

var total = x.value + y.value; 

与这一个

var total = parseInt(x.value) + parseInt(y.value); 

就是这样:)