理解为什么在这种情况下我需要parseInt()

时间:2015-03-06 15:10:35

标签: javascript

对于表单验证,我使用非常简单的比较。 If y >= x然后返回false

我已经使用parseInt()解决了我的问题,但我不明白为什么我只需要一个值的这个函数。吃代码:

function validateForm() {
        var x = parseInt(document.forms["einstform"]["zeit1"].value);
        var y = parseInt(document.forms["einstform"]["zeit2"].value);
        if (y >= x) {
            alert("Nope." + " " + x + " " + y);
            return false;
        }
    }

这是我的形式:

<form name="einstform" action="a file" method="GET" onSubmit="return validateForm();">

    <select name="zeit1">
      <option value="30">1 Month</option>
      <option value="60" selected>2 Months</option>
      <option value="90">3 Months</option>
    </select>

    <select name="zeit2">
      <option value="0">Never</option>
      <option value="7">1 Week</option>
      <option value="14" selected>2 Weeks</option>
      <option value="21">3 Weeks</option>
      <option value="30">4 Weeks</option>
      <option value="42">6 Weeks</option>
      <option value="60">8 Weeks</option>
      <option value="84">12 Weeks</option>
    </select>

我想这很容易理解。它只是比较选定的值并取消y >= x时提交的表单。而且效果很好,是的。但如果我在第二个选择“1周”(值= 7)中选择,脚本总是告诉我7&gt; = 30.

当然,它可能会获得7的字符串值,因为我必须使用parseInt()(并且可以使用它)。

但是为什么所有其他值的int比较完美,除了7

这是随机告诉我“总是使用parseInt()”还是有更多要理解为什么7拒绝成为int值?

1 个答案:

答案 0 :(得分:2)

如果您不使用parseInt()解析值,则表示该字符串。

否则你得到string >= string

现在改为7 >= 3