0
는 I 3 개 입력동적 입력()
사용자가 어떤 결과를 계산한다 스크립트 입력되지만있는 스크립트에 문제가있어 .. 거의 작동이 exept Sale
입력 값을 갖는 경우가 줄어들 사용자가 Avance
입력을 편집하면 스크립트가 결과를 반환하지 않습니까?
<div id="tst" style="border:1px solid black; background:white; width:100px; height:100px"></div>
Cost = <input id="inp_cost" type="text" /><br>
Avance = <input id="inp_avance" type="text" /><br>
Sale = <input id="inp_sale" type="text" /><br>
$(function(){
var calc = function(){
var Calc = new Calc_avance();
Calc.cost = $('#inp_cost').val();
Calc.avance = $('#inp_avance').val();
Calc.sale = $('#inp_sale').val();
Calc.calc();
$('#tst').html('<div>cost = '+Calc.cost+'</div><div>avance = '+Calc.avance+'</div><div>sale = '+Calc.sale+'</div>');
return Calc;
};
var calc_cost = function(){
var Calc = calc();
};
$('#inp_cost').change(calc_cost)
.keyup(calc_cost);
var calc_avance = function(){
var Calc = calc();
};
$('#inp_avance').change(calc_avance)
.keyup(calc_avance);
var calc_sale = function(){
var Calc = calc();
};
$('#inp_sale').change(calc_sale)
.keyup(calc_sale);
});
function Calc_avance(){
this.cost = 0;
this.avance = 0;
this.sale = 0;
this.calc = function(){
this.cost = parseFloat(this.cost.replace(',', '.'));
this.avance = parseFloat(this.avance.replace(',', '.'));
this.sale = parseFloat(this.sale.replace(',', '.'));
if(!isNumber(this.cost)){
this.cost = 0;
}
if(!isNumber(this.avance)){
this.avance = 0;
}
if(!isNumber(this.sale)){
this.sale = 0;
}
if(this.cost){
if(this.sale){
this.avance = (this.sale - this.cost)/this.sale * 100;
}
if(this.avance){
this.sale = this.cost/(100 - this.avance) * 100;
}
}
else{
this.avance = 0;
}
if(this.avance < 0){
this.avance = 0;
}
};
}
function isNumber(n){
return !isNaN(parseFloat(n)) && isFinite(n);
}
어디에서 재귀가 보입니까? :) – clarkk
네, 좀 더 간단하게 만들 수 있지만 그 부분은 더 이상 제가 버렸습니다. – clarkk