否则,即使控制台日志识别出带有长度的语句,该语句也会继续运行

时间:2019-01-15 07:15:19

标签: javascript jquery if-statement

即使我做了console.log并且也可以识别0长度,但是这段代码也不会运行else if部分。它仍然不会显示字符串。它会给第一部分。有什么问题吗?

function check_width() {

    var width= $('#plwidth').val();

    if (width< 20 || width> 200) {
      $('#error_width').html("Annettu luku ei kelpaa");
      $('#error_width').show();
    } else if (width.length === 0) {
      $('#error_width').html("T&auml;yt&auml; kentt&auml;");
      $('#error_width').show();
    } else {
      $('#error_leveys').hide();
    }
  }

2 个答案:

答案 0 :(得分:1)

  

出什么问题了

问题在于$("input").val()将始终是字符串。当您将字符串与数字进行比较(使用==<等)时,javascript将应用自动类型转换-即将字符串转换为int。无法执行此操作的地方将返回零。

因此,如果您输入的内容为空而不是数字,则

"" < 20 == true 
0 < 20 == true

因此它将呼叫您的第一行,并且永远不会进入width.length == 0检查。

在这种情况下,似乎最简单的解决方案是先检查输入是否为空,即:

function check_width() {

    var width= $('#plwidth').val();

    if (width.length === 0) {
      $('#error_width').html("T&auml;yt&auml; kentt&auml;");
      $('#error_width').show();
    } else if (width < 20 || width > 200) {
      $('#error_width').html("Annettu luku ei kelpaa");
      $('#error_width').show();
    } else {
      $('#error_width').html("").hide()
      //$('#error_leveys').hide();
    }
}

答案 1 :(得分:0)

width.length似乎不正确,并且没有length属性,除非它是字符串或数组

else if (width.length === 0) {替换为else if (width === 0) {