我试图在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();
});
});
答案 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>
答案 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;
执行相同操作但number
中divide()
无法使用number
,因此失败。假设divide(number);
...
divide(someothernumber);
全局可用,此行不会导致错误。在这种情况下,它可能会执行您想要的操作,但是其参数立即被忽略并被覆盖的函数不是很有用。想象一下,你想用两个不同的值来称呼它:
var entry = number;
由于someothernumber
行而无法正常工作 - 您永远无法将divide()
成功传递到var entry = number;
。删除该行:
divide()
来自Mapview
,你会更开心。
你试图删除&#34; var entry = number&#34;