代码返回未定义而不是结果

时间:2019-08-12 14:02:08

标签: javascript jquery

我希望某种形式从用户提供的某种输入中返回大于10的数字。这需要与运行另一个功能的页面在同一页面中运行。

第二个函数“ mare”返回未定义,而第一个函数正常。应该有办法将输入存储在数组中,然后在其上传递函数吗?

我是菜鸟,因此欢迎其他任何建议或技巧。

$(document).ready(function() {
  var val = '';
  var contor = 0;

  function multiplu(j) {
    return j % 3 == 0 || j % 7 == 0;
  }

  function mare(input) {
    for (var i = 0; i < input.length; i++) {
      if (input[i] > 10) {
        return contor++;
      };
    }
  };

  $('#newItem').keyup(function(e) {
    if (e.which == 13) {
      e.preventDefault();
      $('#unu').append('<li>' + this.value + ': ' +
        multiplu(this.value) + "</li>");
    }
  });

  $('#newItem2').keyup(function(e) {
    if (e.which == 13) {
      e.preventDefault();
      $('#doi').append('<li> din sirul ' + this.value + 'sunt: ' +
        mare(this.value) + " mai mari ca 10 </li>");
    }
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" id="newItem">
<input type="text" id="newItem2">
<div id="prnt">
  <ul id="unu">
    <li>potato</li>
  </ul>
</div>
<div id="prnt">
  <ul id="doi">
    <li>potato</li>
  </ul>
</div>

2 个答案:

答案 0 :(得分:0)

您想从输入数量中获得大于10的数字,然后可以为这些输入分配一些class,例如item

然后使用jquery查找所有$('.item').toArray()类的输入。

您可以过滤这些输入,并使用.filter(x => x.value > 10)仅选择那些值大于10的输入。

然后只需获取.length,它将返回此类输入的总数。

您可以在下面查看完整的代码。

$(document).ready(function() {
  var val = '';
  var contor = 0;

  function multiplu(j) {
    return j % 3 == 0 || j % 7 == 0;
  }

  function mare() {
    return $('.item').toArray().filter(x => x.value > 10).length;
  };

  $('#newItem').keyup(function(e) {
    if (e.which == 13) {
      e.preventDefault();
      $('#unu').append('<li>' + this.value + ': ' +
        multiplu(this.value) + "</li>");
    }
  });

  $('#newItem2').keyup(function(e) {
    if (e.which == 13) {
      e.preventDefault();
      $('#doi').append('<li> din sirul ' + this.value + 'sunt: ' +
        mare() + " mai mari ca 10 </li>");
    }
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" class="item" id="newItem">
<input type="text" class="item" id="newItem2">
<div id="prnt">
  <ul id="unu">
    <li>potato</li>
  </ul>
</div>
<div id="prnt">
  <ul id="doi">
    <li>potato</li>
  </ul>
</div>

答案 1 :(得分:0)

正如我在评论中提到的,您应该定义分隔符(我将其定义为,)。然后在回车键上,您应该使用此分隔符拆分输入字符串,然后遍历此数组并检查哪些数字大于10。这里是一个示例:

var val = '';

function multiplu(j) {
  return j % 3 == 0 || j % 7 == 0;
}

function mare(input) {
  var contor = 0;
  const splitted = input.split(',');

  splitted.forEach(function(value) {
    if (+value > 10) {
      ++contor;
    }
  });

  return contor;
};

$('#newItem').keyup(function(e) {
  if (e.which == 13) {
    e.preventDefault();
    $('#unu').append('<li>' + this.value + ': ' +
      multiplu(this.value) + "</li>");
  }
});

$('#newItem2').keyup(function(e) {
  if (e.which == 13) {
    e.preventDefault();
    $('#doi').append('<li> din sirul ' + this.value + ' sunt: ' +
      mare($(this).val()) + " mai mari ca 10 </li>");
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" id="newItem">
<input type="text" id="newItem2">
<div id="prnt">
  <ul id="unu">
    <li>potato</li>
  </ul>
</div>
<div id="prnt">
  <ul id="doi">
    <li>potato</li>
  </ul>
</div>