我使用onkeyup()从表单输入中获取值和ID。如果该值在0到4之间,则要将其添加到数组中。但是,似乎我的函数将值添加到数组中,无论它们在0到4之间,尽管我希望仅当值在0到4之间时才将值添加到数组。我在做什么错?

这些是输入:

<input type="number" class="form-control" id=0 onkeyup="a(this)" mix="0" max="4">
<input type="number" class="form-control" id=1 onkeyup="a(this)" mix="0" max="4">
.
.

这是我的功能:
function a(c){

    var dps = [];
    var id = c.id;
    var valueStr = c.value;
    var value = parseInt(valueStr)
    if (0 <= value <= 4) {
        dps[id]=value;
        console.log("id: ",id);
        console.log("value: ", value);
        console.log("length of array: ",dps.length);
        console.log("type of value: ", typeof value);
    }
 }

我在这里的Jsfiddle上重新创建了它:
https://jsfiddle.net/89az7u4n/

最佳答案

您通常在数学中写不等式的方式不同于我们通常在大多数编程语言中编写比较式的方式。
if (0 <= value <= 4)并不意味着“如果值在0到4之间”。解析器将其视为(0 <= value) <= 4,它们要么评估为false <= 4要么true <= 4都评估为true

将您的if语句更改为此:

if (0 <= value && value <= 4) {
  ...
}

其中&&logical AND运算符。

09-19 21:22