算术的JQuery变量被视为字符串

时间:2015-10-10 11:47:16

标签: javascript jquery html variables

我试图在下面的代码中使用html选择框和jquery来获取选定月份的3个月。代码不是将两个变量一起添加,而是将它们视为两个字符串。谁能协助我做到这一点?

<body>
    <form role="form" class="form-inline">
        <div class="form-group">
            <label class="control-label" for="Q1Month">
                Quarter 1 Month
            </label>
            <select class="form-control" id="Q1Month">
                <option selected value=''>--Select Month--</option>
                <option value='1'>January</option>
                <option value='2'>February</option>
                <option value='3'>March</option>
                <option value='4'>April</option>
                <option value='5'>May</option>
                <option value='6'>June</option>
                <option value='7'>July</option>
                <option value='8'>August</option>
                <option value='9'>September</option>
                <option value='10'>October</option>
                <option value='11'>November</option>
                <option value='12'>December</option>
            </select>
        </div>
    </form>
    <script src="js/jquery.js"></script>
    <script>
    $(function() {
        $('#Q1Month').change(function() {
            var month = $(this).val();
            $('#Q2Month').val(month);
            var advanceby = 3;
            var newmonth = month + advanceby;
            window.alert(newmonth);
        });
    });
    </script>
</body>

3 个答案:

答案 0 :(得分:2)

当从DOM读取任何值时,它是字符串。要将其转换为数字,您可以使用一元+运算符。

在值

前添加+
var month = +$(this).val();

+也是Javascript中的连接运算符,因此当操作数中的任何一个字符串+用于字符串连接时。

$(function() {
  $('#Q1Month').change(
    function() {
      var month = $(this).val();
      $('#Q2Month').val(month);
      var advanceby = 3;
      var newmonth = month + advanceby;
      window.alert(newmonth);
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<form role="form" class="form-inline">
  <div class="form-group">
    <label class="control-label" for="Q1Month">
      Quarter 1 Month
    </label>
    <select class="form-control" id="Q1Month">
      <option selected value=''>--Select Month--</option>
      <option value='1'>January</option>
      <option value='2'>February</option>
      <option value='3'>March</option>
      <option value='4'>April</option>
      <option value='5'>May</option>
      <option value='6'>June</option>
      <option value='7'>July</option>
      <option value='8'>August</option>
      <option value='9'>September</option>
      <option value='10'>October</option>
      <option value='11'>November</option>
      <option value='12'>December</option>
    </select>
  </div>
</form>

答案 1 :(得分:0)

因为你提取的值是一个字符串! 您需要的是选项索引和实际值,因此请尝试访问当前选定的选项索引而不是值,然后添加3并重置所需的元素。 希望我帮忙

答案 2 :(得分:0)

val()总是返回字符串,因此在添加

之前使用parseInt()将字符串转换为整数

SELECT *
FROM (
    SELECT 
      month([DateOpened]) as [month], [Status],
        COUNT(*) as cnt
    FROM [Incidents]
    group by month([DateOpened]) , [Status]
) as s
PIVOT
(
    SUM(cnt)
    FOR [Status] IN ( Active , [Awaiting User Info] , [Closed] , [New] , [Resolved])
)AS pivotname
$(function() {
  $('#Q1Month').change(
    function() {
      var month = parseInt($(this).val(),10);
      $('#Q2Month').val(month);
      var advanceby = 3;
      var newmonth = month + advanceby;
      window.alert(newmonth);
    });
});