Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
意外的javascript响应_Javascript - Fatal编程技术网

意外的javascript响应

意外的javascript响应,javascript,Javascript,这是我的代码首先 $(function() { var fee_percent = parseFloat('<?php echo $gateway["gateway_fees"]; ?>'); var fee_fixed = parseFloat('<?php echo $gateway["gateway_fixed_fees"]; ?>'); var min = parseFloat('<?php echo $gateway["min_in

这是我的代码首先

$(function() {
    var fee_percent = parseFloat('<?php echo $gateway["gateway_fees"]; ?>');
    var fee_fixed = parseFloat('<?php echo $gateway["gateway_fixed_fees"]; ?>');
    var min = parseFloat('<?php echo $gateway["min_invest_limit"]; ?>');
    var max = parseFloat('<?php echo $gateway["max_invest_limit"]; ?>');


    $("#amountId").on('change keyup keydown', function() {
        var $this = $(this);
        var val = parseFloat($this.val());
        val = val.toFixed(5);

        var valid = true;

        var fee = parseFloat(val * fee_percent / 100) + fee_fixed;
        fee = fee.toFixed(5);

        var final_amount = val - fee;
        final_amount = final_amount.toFixed(5);

        console.log("value: " + val);
        console.log("fee: " + fee);
        console.log("final: " + final_amount);
        console.log("min: " + min.toFixed(5));
        console.log("max: " + max.toFixed(5));

        if(val <= 0 || isNaN(val) || fee > val || val < min.toFixed(5) || val > max.toFixed(5)) fee = final_amount = 0;

        $("#depositFee").html(fee);
        $("#depositAmountFinal").html(final_amount);
    });
});
$(函数(){
风险值费用百分比=浮动汇率(“”);
var费用固定=浮动(“”);
var min=parseFloat(“”);
var max=parseFloat(“”);
$(“#amountId”).on('change keyup keydown',function()){
var$this=$(this);
var val=parseFloat($this.val());
val=val.toFixed(5);
var valid=true;
风险值费用=浮动(价值*费用百分比/100)+固定费用;
费用=固定费用(5);
var最终金额=val-费用;
最终金额=最终金额。固定(5);
console.log(“值:+val”);
控制台日志(“费用:”+费用);
控制台日志(“最终:+最终金额”);
控制台日志(“min:+min.toFixed(5));
console.log(“max:+max.toFixed(5));
如果(val val | | valmax.toFixed(5))费用=最终金额=0;
$(“#存款费”).html(费用);
$(“#存款金额最终”).html(最终金额);
});
});
现在我的问题是,
val>max.toFixed(5)
这总是返回TRUE

以下是控制台响应:

价值:11.00000 费用:0.46000 决赛:10.54000 最低:10.00000 最高:10000.00000

那么这个值是11,最大值是10000,那么为什么它是假的呢

如果不清楚,请询问,谢谢

更新:当我键入10、100或1000等时,它工作正常


如果我不使用
max.toFixed(5)
,而是只使用
max
,一切正常,但当我在最后键入一些值5时,如55、65、75等,条件再次变为真,应返回假。

如果我理解您的意思正确:

val = 11;

max = 10000;

if(val > max)

if(11 **is greater than** 10000)

它应该返回false。11不大于10000。

toFixed
返回字符串

因此,
“11”>“10000”
返回您的
true
,因为。1后跟1大于1后跟0

您可以在控制台中尝试:

“01”>“0001”
将返回同样基于相同概念的
true

要避免它:

parseFloat(val) > parseFloat(max.toFixed(5))

11小于10000,因此应返回false。确实不想使用<运算符?11始终小于10000。那么它应该只返回false。很抱歉,这是我的错误,事实上条件在这一点上返回true,但事实上这是不正确的,所以我说false。@mohamedrias:
“11”>“10000”
:-)@mohamedrias好的,我举个例子,现在告诉我,这个条件是否有效<代码>费用=最终金额=0,这是来自if条件块,所以如果值为11,最大值为10000,
费用=最终金额=0是否应该运行?据我说,没有,但实际上它运行,这是我的问题。它应该是一个comment@mohamedrias真的很好奇,为什么?很多时候,我问过一个问题,问题是简单的语法错误或对我自己的代码的误解,在那里人们发布了我已经接受的答案。我理解。我认为OP最初的问题可能不同。因为很明显,11>10000总是错误的。所以只提到。但很高兴看到你在那里解释。保持up@Matt这根本不是语法错误,我正在尽一切可能测试我的代码,我希望你再次阅读我的问题,然后看看你是否能帮我解决这个问题。@Matt你在回答中说的是正确的,应该返回false,但返回true。这似乎是真的,但解决方案是什么?更新的答案。parseFloat和Check这是因为解释器试图将两个操作数类型转换为同一类型。当它只有5岁时,它把“11000”转换成了数字。但当它变为55时,它将其转换为字符串。请注意,在您的案例中,val有.toFixed。是这样,;我已经试过parseFloat了,但是看到我问题的最后一部分,我更新了,当我使用parseFloat时会发生这种情况,当我键入545或555时它工作,但当我键入565或575时,再次返回true。不,当对两个操作数都使用parseFloat时,它工作正常。我测试了不同的组合。