我有以下代码:
<script type="application/javascript">
$(document).ready(function () {
$("#market_value").on("change paste keyup", function() {
var market_value = parseInt($(this).val());
var data = [
{"percent":"10","market_value":"10000"},
{"percent":"20","market_value":"10001"},
{"percent":"25","market_value":"20000"}
];
for (var x in data) {
if(market_value >= parseInt(data[x].market_value)) {
console.log(percentage(market_value, data[x].percent));
}
};
});
function percentage(num, per)
{
return (num/100)*per;
}
});
</script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" class="form-control" id="market_value" name="market_value" value="">
我只需要一个简单的代码即可根据JSON数据列表计算market_value的百分比。
例如:
如果输入8000,则结果必须为800(基于“百分比”字段的10%)。
如果我输入11000,则结果必须为2200(基于“百分比”字段的20%,因为它高于10001)
如果我键入50000,则结果必须为12500(基于“百分比”字段的25%,因为该值高于20000)
如果我输入3000,结果必须为300(基于“百分比”字段的10%,因为它不超过10000)
我编写的代码以某种方式起作用,但是如果输入的数字小于10000,则无任何显示。
这些不是固定值,数据(JSON)是动态的。
最佳答案
正如@ Andreas @和@ John @正确指出的那样,循环将结束而无需执行任何操作:
for (var x in data) {
if(market_value >= parseInt(data[x].market_value)) { // never happens for <10000
console.log(percentage(market_value, data[x].percent));
}
为什么?假设我们给
market_value = 5555
。现在,随着
for
的发展,您将进行以下比较:if( 5555 >= 10000 ) { ... }
if( 5555 >= 10001 ) { ... }
if( 5555 >= 10002 ) { ... }
所有这些条件将为您提供false
。这是问题的核心。修复建议
关于javascript - jQuery-根据多个条件计算百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62966706/