我有一张像这样的表:
sellingprice cost postage profit paypal ebayfees discount FVF
? 49 1.75 4.00 ? ? 0.2 ?
? 51 1.75 4.00 ? ? 0.2 ?
这是解决上述信息的不同公式:
sellpriceresult =成本+邮资+利润+ paypal + FVF;
paypalresult = sellpriceresult * 0.022 + 0.3;
FVFresult = ebayfees - (ebayfees * discount);
ebayfeesresult 将使用if条件显示结果,如下所示:
如果sellpriceresult> 50然后(sellpriceresult - 50)* 0.05 + 3.5
否则,如果sellpriceresult< = 50则售卖价格* 0.07
我想使用客户端计算实现计算。我的问题是我不知道如何在一个函数中组合所有计算。我对jQuery有一点想法,希望你们指导我如何执行这个。任何帮助都会更受欢迎。
以下是我的示例代码:
<table border = "0">
<tr>
<td><center>Selling Price</center></td>
<td><center>Cost</center></td>
<td><center>Postage</center></td>
<td><center>Profit</center></td>
<td><center>Paypal</center></td>
<td><center>eBay Fees</center></td>
<td><center>Discount</center></td>
<td><center>FVF</center></td>
</tr>
<tr>
<td>
<input type='text' id='sellingprice' name='sellingprice' size='10' readonly='true'/>
</td>
<td>
<input type='text' id='cost' name='cost' size='10' value='$myrow[1]' readonly='true'/>
</td>
<td>
<input type='text' id='postage' name='postage' size='10' value='1.75' readonly='true'/>
</td>
<td>
<input type='text' id='profit' name='profit' size='10' value='4.00' readonly='true'/>
</td>
<td>
<input type='text' id='paypal' name='paypal' size='10' readonly='true'/>
</td>
<td>
<input type='text' id='ebayfees' name='ebayfees' size='10' readonly='true'/>
</td>
<td>
<input type='text' id='discount' name='discount' size='10' value='0.2' readonly='true'/>
</td>
<td>
<input type='text' id='fvf' name='fvf' size='10' readonly='true'/>
</td>
</tr>
</table>
<script>
$(document).ready(function(){
$('tr').each(function(){
var sellingprice = 0;
$(this).find("input[name=cost],input[name=postage],input[name=profit],input[name=paypal],input[name=fvf]").each(function(){
sellingprice += (+$(this).val());
});
$(this).find("input[name=sellingprice]").val(sellingprice).css("background-color", "yellow");
});
});
$(document).ready(function(){
$('tr').each(function(){
var paypal = 0;
$(this).find("input[name=sellingprice]").each(function(){
paypal = (+$(this).val()) * 0.022 + 0.3;
paypal = paypal.toFixed(2);
});
$(this).find("input[name=paypal]").val(paypal).css("background-color", "yellow");
});
});
$(document).ready(function(){
$('tr').each(function(){
var sellingprice = 0;
$(this).find("input[name=cost],input[name=postage],input[name=profit],input[name=paypal],input[name=fvf]").each(function(){
sellingprice = (+$(this).val());
sellingprice = sellingprice.toFixed(2);
});
$(this).find("input[name=sellingprice]").val(sellingprice).css("background-color", "yellow");
});
});
$(document).ready(function(){
$('tr').each(function(){
var fvf = 0;
$(this).find("input[name=ebayfees],input[name=discount]").each(function(){
fvf = (+$(this).val());
});
$(this).find("input[name=fvf]").val(fvf).css("background-color", "yellow");
});
});
$(document).ready(function(){
$('tr').each(function(){
var sellingprice = 0;
$(this).find("input[name=cost],input[name=postage],input[name=profit],input[name=paypal],input[name=fvf]").each(function(){
sellingprice += (+$(this).val());
});
$(this).find("input[name=sellingprice]").val(sellingprice).css("background-color", "yellow");
});
});
$(document).ready(function(){
$('tr').each(function() {
var sellingpriceResult = parseFloat($(this).find("input[name=sellingprice]").val());
var result = 0;
if (sellingpriceResult > 50) {
result = (sellingpriceResult - 50) * 0.05 + 3.5;
result = result.toFixed(2);
}
else {
result = sellingpriceResult * 0.07;
result = result.toFixed(2);
}
$(this).find("input[name=ebayfees]").val(result).css("background-color", "yellow");
});
});
</script>
答案 0 :(得分:0)
注1 :我猜测会有几行,因此您必须从输入中删除ID属性,因为ID在HTML文档中必须是唯一的。
注意2 :我不确定完全理解您想要进行的计算。 “卖价”取决于“FVF”,“FVF”取决于“Ebay费用”和“Ebay费用”取决于“卖价”......似乎有点不可能用这种递归依赖来计算
注意3 :您在示例中使用的是insertionfee
元素,但我不在您提供的标记中。
以下代码的一些注释:
获取当前<tr>
的jquery对象,以便与$this = $(this)
重复使用
找到所有需要重复使用的元素。此外,由于$this
执行此操作$item.val(myvariable = 1+1)
实际上将计算保存到myvariable
并将其传递给.val()
此condition ? <if condition true> : <if condition false>
允许您制作内联条件语句
我无法使用.toFixed(2)
,我想这是你的功能
我已经为你jsfiddle做了一个。
$(document).ready(function() {
$('tr').each(function() {
var $this = $(this),
$sellingprice = $this.find('[name=sellingprice]'),
$cost = $this.find('[name=cost]'),
$postage = $this.find('[name=postage]'),
$profit = $this.find('[name=profit]'),
$paypal = $this.find('[name=paypal]'),
$ebayfees = $this.find('[name=ebayfees]'),
$discount = $this.find('[name=discount]'),
$fvf = $this.find('[name=fvf]');
var selpriceresult, paypalresult, fvfresult, ebayresult;
$sellingprice.val((selpriceresult = $cost.val() + $postage.val() + $paypal.val() + $fvf.val()));
$paypal.val(paypalresult = selpriceresult * 0.022 + 0.3);
$ebayfees.val(ebayresult = selpriceresult > 50
? (selpriceresult - 50) * 0.05 + 3.5
: selpriceresult * 0.07);
$fvf.val(fvfresult = ebayresult - (ebayresult - $discount.val()));
});
关于公式
我检查了excel文件。这并不像看起来那么容易。公式有依赖关系,我不知道excel是如何在内部执行计算的。
我知道excel构建并优化依赖关系树以确定它应如何执行工作簿的计算。您可以对依赖关系和单元格之间的关系进行排序(工具&gt;审核),但我不是一个优秀的专家,而且完全出于我的知识。
我认为这也有点超出了这个问题的范围 - 将jquery代码块合并为一个,而不是转换 excel公式到javascript计算。
我非常愿意帮助你进行计算,但我不能。您可以询问有关此特定主题的其他问题。