【问题标题】:Different formulas in jQuery based on number entered [closed]jQuery中基于输入数字的不同公式[关闭]
【发布时间】:2014-08-05 05:27:01
【问题描述】:

我想根据输入的数字使用不同的公式。例如,如果一个数字大于 25,000,000,则将执行一次计算。如果小于 25,000,000 但大于 10,000,000 的数字,将执行另一个计算,等等。

关于如何进行以下工作的任何建议:

HTML:

<input type="text" id="calculation" name="submitted[calculation]" maxlength="20" class="form-text required">

jQuery:

$("#calculation").change(function () {
    if (parseFloat(this.value) >= 25000000) {
        alert("court determines rate");
        if (parseFloat(this.value)( < 25000000 && >= 10000000)) {
            alert(113000 + (((this.value) - 10000000) * 0.005));
            if (parseFloat(this.value)( >= 1000000 && < 10000000)) alert(23000 + (((this.value) - 1000000) * 0.01));
            if (parseFloat(this.value)( >= 200000 && < 1000000)) alert(7000 + (((this.value) - 200000) * 0.02));
            if (parseFloat(this.value)( >= 100000 && < 200000)) alert(4000 + (((this.value) - 100000) * 0.03));

            else {
                alert((this.value) * .04)
            }
        })
});

更新:我已经更新了代码(再次)如下,但仍然没有任何运气。有什么建设性的建议吗?

$("#calculation").change(function () {
var entry = parseFloat(this.value);

if (entry >= 25000000) {

    alert("court determines rate");
    }
else if (entry >= 10000000)) {
        alert(113000 + (((this.value) - 10000000) * 0.005));
        }
else (entry >= 1000000) {
    alert(23000 + (((this.value) - 1000000) * 0.01));
    }
else (entry >= 200000) {
    alert(7000 + (((this.value) - 200000) * 0.02));
    }
else (entry >= 100000) {
    alert(4000 + (((this.value) - 100000) * 0.03));
    }

        else {
            alert((this.value) * .04);
        }
    })
})

【问题讨论】:

  • 反对票有什么特别的原因吗? Stackoverflow 指出,“每当你遇到一个极其草率、不费吹灰之力的帖子,或者一个明显不正确且可能危险地不正确的答案时,请使用你的反对票。”如果我的帖子证明了上述内容,请解释一下,以便我修复。谢谢。
  • 关于否决票(我没有投反对票),但我希望在这里提问的人至少知道一种语言的基本语法规则(我知道,这比现实更如意料之中),或者至少能够调试代码并发现它们有语法错误。
  • @Felix Kling。感谢您的输入。显然,我是一个业余爱好者,但我会尽力而为。我不太在乎积分(我不想通过这个网站找工作);我关心在我正在努力解决的问题上获得一些建设性的帮助。然而,反对票不仅违反了 Stackoverflow 的指导方针 (stackoverflow.com/help/privileges/vote-down),而且还具有侮辱性和适得其反的效果。没有任何反馈的反对票并没有告诉我如何改进我的问题或代码。如您所见,我很沮丧...
  • @Ken 在这个问题上有 cmets 让你知道你有语法错误;你怎么知道那些人没有投反对票?

标签: javascript jquery formula conditional-statements conditional-operator


【解决方案1】:

您上面使用的语法很难阅读并且无效。你应该只使用 parseFloat 一次,而不是到处使用它。这是一个非常简单的示例,说明您应该做什么:

$("#calculation").change(function () {
    var parsedFloat = parseFloat(this.value);

    if (parsedFloat > 25000000){
        console.log('use formula 1. Number is greater than 25000000');
    }
    else if (parsedFloat > 10000000){
        console.log('use formula2. Number is greater than 10000000 and less than or equal to 25000000');
    }
    else {
        console.log('use formula3. Number is less than or equal to 10000000');
    }
});

【讨论】:

  • 韦恩·埃勒里,谢谢你的例子。我试图相应地修改我的代码,但没有成功。 (注意:我知道我的代码无效——我首先发布我的问题的原因是因为它不起作用。)
  • @Felix King。谢谢您的意见。我更新了代码以反映您的建议,但仍然没有任何运气。
【解决方案2】:

经过多次反复试验,我发现了问题所在。第一个 elseif 中有一个额外的结束括号。

以下是更正后的代码:

$(document).ready(function () {

$("#calculation").change(function () {

var entry = parseFloat(this.value);


  if (entry >= 25000000) {
        alert("court determines rate");
    } else if (entry >= 10000000) {
    alert(113000 + (((this.value) - 10000000) * 0.005));
} else if(entry >= 1000000) {
    alert(23000 + (((this.value) - 1000000) * 0.01));
} else if (entry >= 200000) {
    alert(7000 + (((this.value) - 200000) * 0.02));
} else if (entry >= 100000) {
    alert(4000 + (((this.value) - 100000) * 0.03));
} else {
    alert((this.value) * .04);
}

});
});

【讨论】:

  • 很好地解决了问题
猜你喜欢
  • 2019-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多