jquery:我必须使用parseInt()即使处理数字,为什么?

时间:2010-05-29 18:34:44

标签: javascript jquery

我有以下脚本

<select id="select1">
      <option value="1">1day</option>
      <option value="2">2day</option>
      <option value="3">3day</option>
    </select>

    <select id="select2">
      <option value="1">1day</option>
      <option value="2">2day</option>
      <option value="3">3day</option>
    </select>

和jquery

$("#select2").change(function() {
            var max_value = parseInt($("#select2 :selected").val());
            var min_value = parseInt($("#select1 :selected").val());
            if(max_value < min_value)
            {
              $("#select1").val($(this).val());
            }
        });

现在,无论如何我无法理解 - 如果选项元素的值是整数,为什么我必须使用parseInt()?在某些情况下,如果没有parseInt(),它就无法工作。

由于

4 个答案:

答案 0 :(得分:5)

表单字段值始终存储为字符串。它们是否看起来像整数是无关紧要的;他们是字符串。在处理它们之前,您需要将它们转换为整数:)

答案 1 :(得分:4)

http://www.uvsc.edu/disted/decourses/mct/2760/IN/krutscjo/lessons/06/ff_05.html

  

除非您明确告诉它是一个数字,否则Javascript会将大多数内容视为字符串。一个值得注意的例子是从表单元素中获取值。根据浏览器和用户输入的不同,您可能会得到一些意想不到的结果。

答案 2 :(得分:1)

值永远不会是整数,事实上你把数字放在那里而不是谁知道什么是你的选择。

答案 3 :(得分:1)

jQuery的val()函数总是返回一个字符串。在许多情况下,你可以混合数字和字符串(例如在算术中),当比较两个字符串变量时,javascript将执行字符串比较,而不是数字比较(这是预期的)