代码之家  ›  专栏  ›  技术社区  ›  Codehan25

使用JQuery实现简单的add函数

  •  4
  • Codehan25  · 技术社区  · 6 年前

    我要么得到NaN要么没有结果。已经用parseInt()尝试过,但也没有成功。

    我做错了什么?

    function output() {
            var stellplaetze = $('.stellplaetze').val();
            var miete = $('.miete').val();
            var result = stellplaetze * miete * 30;
            $('.result').html(
              '<strong class="text-uppercase">Ertrag pro Monat: </strong><br> ' +
                result +
                ' EUR'
            );
          }
          
    $(function() {
        // Trigger the function
        $('button').on('click', function() {
          output();
          $('#ertragsrechner .result').css('opacity', 1);
        });
    })
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <div class="formbody">
            <input type="hidden" name="FORM_SUBMIT" value="auto_form_5">
            <input type="hidden" name="REQUEST_TOKEN" value="pC9vYIP8oBzVONQiwg-ixrLwDhEdK0LA8-5n-6kQJPw">
            <div class="widget widget-text stellplaetze">
                <input type="text" name="stellplaetze" id="ctrl_12"
                    class="text stellplaetze form-control flex-fill mr-0 mr-sm-2 mb-3" value=""
                    placeholder="Anzahl der Stellplätze">
            </div>
            <div class="widget widget-text miete">
                <input type="text" name="miete" id="ctrl_13" class="text miete form-control flex-fill mr-0 mr-sm-2 mb-3"
                    value="" placeholder="Miete pro Tag">
            </div>
            <div class="widget widget-submit add">
                <button type="submit" id="ctrl_15" class="submit add btn btn-primary">Ertrag berechnen</button>
            </div>
            <div class="widget widget-explanation explanation result">
                <p>Ertrag Pro Monat</p>
            </div>
        </div>
    3 回复  |  直到 6 年前
        1
  •  5
  •   Pranav C Balan Ansh Takalkar    6 年前

    实际上,问题在于选择器必须更加具体,因为有多个元素具有相同的类名。在您的情况下,您可以添加 input 以及类选择器。

    val() 方法只检索集合中第一个元素的值,在您的情况下,它是 div 元素。

    从jQuery文档:

    function output() {
      var stellplaetze = $('input.stellplaetze').val();stellplaetze
      // here --------------^^^^^^---------
      var miete = $('input.miete').val();
      // here -------^^^^^^---------
      var result = stellplaetze * miete * 30;
      $('.result').html(
        '<strong class="text-uppercase">Ertrag pro Monat: </strong><br> ' +
        result +
        ' EUR'
      );
    }
    
    // Trigger the function
    $('#ertragsrechner button').on('click', function() {
      output();
      $('#ertragsrechner .result').css('opacity', 1);
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <div id="ertragsrechner">
      <div class="formbody">
        <input type="hidden" name="FORM_SUBMIT" value="auto_form_5">
        <input type="hidden" name="REQUEST_TOKEN" value="pC9vYIP8oBzVONQiwg-ixrLwDhEdK0LA8-5n-6kQJPw">
        <div class="widget widget-text stellplaetze">
          <input type="text" name="stellplaetze" id="ctrl_12" class="text stellplaetze form-control flex-fill mr-0 mr-sm-2 mb-3" value="" placeholder="Anzahl der Stellplätze">
        </div>
        <div class="widget widget-text miete">
          <input type="text" name="miete" id="ctrl_13" class="text miete form-control flex-fill mr-0 mr-sm-2 mb-3" value="" placeholder="Miete pro Tag">
        </div>
        <div class="widget widget-submit add">
          <button type="submit" id="ctrl_15" class="submit add btn btn-primary">Ertrag berechnen</button>
        </div>
        <div class="widget widget-explanation explanation result">
          <p>Ertrag Pro Monat</p>
        </div>
      </div>
    </div>
        2
  •  3
  •   ellipsis    6 年前

    假设所有变量都是从输入框中检索到的,在相乘时,使用 Number()

    var result = Number(stellplaetze) * Number(miete) * 30;
    

    html中有多个元素具有相同的类。要使用类miete和stellplaetze选择输入,请使用input.classname作为jquery选择器

    function output() {
            var stellplaetze = $('input.stellplaetze').val();
            var miete = $('input.miete').val();
            var result = Number(stellplaetze) * Number(miete) * 30;
            $('.result').html(
              '<strong class="text-uppercase">Ertrag pro Monat: </strong><br> ' +
                result +
                ' EUR'
            );
          }
          
    $(function() {
        // Trigger the function
        $('button').on('click', function() {
          output();
          $('#ertragsrechner .result').css('opacity', 1);
        });
    })
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <div class="formbody">
            <input type="hidden" name="FORM_SUBMIT" value="auto_form_5">
            <input type="hidden" name="REQUEST_TOKEN" value="pC9vYIP8oBzVONQiwg-ixrLwDhEdK0LA8-5n-6kQJPw">
            <div class="widget widget-text stellplaetze">
                <input type="text" name="stellplaetze" id="ctrl_12"
                    class="text stellplaetze form-control flex-fill mr-0 mr-sm-2 mb-3" value=""
                    placeholder="Anzahl der Stellplätze">
            </div>
            <div class="widget widget-text miete">
                <input type="text" name="miete" id="ctrl_13" class="text miete form-control flex-fill mr-0 mr-sm-2 mb-3"
                    value="" placeholder="Miete pro Tag">
            </div>
            <div class="widget widget-submit add">
                <button type="submit" id="ctrl_15" class="submit add btn btn-primary">Ertrag berechnen</button>
            </div>
            <div class="widget widget-explanation explanation result">
                <p>Ertrag Pro Monat</p>
            </div>
        </div>
        3
  •  2
  •   Davide Vitali    6 年前

    在许多元素上具有相同的类名,而 val() 方法说

    获取匹配元素集中第一个元素的当前值,或设置每个匹配元素的值。

    因此,您要么迭代元素数组,要么更改输入元素的类名