变量作为未定义的jQuery返回

时间:2016-01-22 04:44:20

标签: javascript jquery

我试图在jQuery中调用一个函数,并且变量在控制台中以未定义的形式返回

   var divide = function(entry) {
        var entry = number

        for (var i = 1; i <= entry; i++) {
            if (i % 5 === 0 && i % 3 === 0) {
              return "pingpong";
            } else if ( i % 3 === 0) {
              return "ping";
            } else if (i % 5 === 0 ) {
              return "pong";
            } else {
              return i;
          }
       }
    }

    $(document).ready(function(){
        $("form#number").submit(function(event){

           var number = parseInt($("#userNumber").val());
           var pingpong = divide (number);

           $("#result").text(pingpong);
           event.preventDefault();
      });

    });

2 个答案:

答案 0 :(得分:1)

为什么你需要一个for-loop?将号码分配给entry无效,因为number位于$(document).ready的本地范围内,divide未定义该范围。当您将entry作为参数传递时,请将其用于conditions

试试这个:

var divide = function(i) {
  if (i % 5 === 0 && i % 3 === 0) {
    return "pingpong";
  } else if (i % 3 === 0) {
    return "ping";
  } else if (i % 5 === 0) {
    return "pong";
  } else {
    return i;
  }
}

$(document).ready(function() {
  $("form#number").submit(function(event) {
    var number = parseInt($("#userNumber").val());
    var pingpong = divide(number);
    $("#result").text(pingpong);
    event.preventDefault();
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<form id='number'>
  <input type="number" id='userNumber'>
  <input type="submit">
  <div id="result"></div>
</form>

Fiddle here

答案 1 :(得分:-1)

我认为你可能会对参数如何传递给函数感到困惑。 你有:

function divide ( entry ) {         // defining divide
    var entry = number;             // this line is counter-productive
    ...
}
    ....
var number;
... divide(number);                 // calling divide

当您调用divide()函数时,变量number的值会自动复制到entry中的变量divide()中。然后,您尝试使用var entry = number;执行相同操作但numberdivide()无法使用number,因此失败。假设divide(number); ... divide(someothernumber); 全局可用,此行不会导致错误。在这种情况下,它可能会执行您想要的操作,但是其参数立即被忽略并被覆盖的函数不是很有用。想象一下,你想用两个不同的值来称呼它:

var entry = number;

由于someothernumber行而无法正常工作 - 您永远无法将divide()成功传递到var entry = number; 。删除该行:

divide()

来自Mapview,你会更开心。

你试图删除&#34; var entry = number&#34;