2016-02-05 49 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); 

就是這樣:)