我一直在学习JQuery并遇到错误。
$(document).ready(function(){
$("#gbutton").click(function( tries = $("#guesses").val(),
guess = $("#guess").val(),
rnumber = $("#rnumber").val() || (Math.floor(Math.random()*500)+1)){
if (tries < 1) return;
var result;
if (guess == rnumber) result = "You win!";
else if (guess > rnumber) result = "Too high!";
else if (guess < rnumber) result = "Too low!";
$("#guesses").val(tries-1);
$("#rnumber").val(rnumber);
$("#result").val(result);
return;
});
});
tries
会返回一个对象而不是一个数字。我现在已经搞砸了一段时间,并最终修复了#34;它。事实上,我的修复没有任何意义。它只是有效。不过,我对它为何起作用感到困惑。
为了修复它,我最后只是在我的代码中添加了另一个参数:
.click(function(x,
tries = $("#guesses").val(),
guess = $("#guess").val(),
rnumber = $("#rnumber").val() || (Math.floor(Math.random()*500)+1))
它只是有效。在这一点上,我只是被困惑了。我做错了什么?我做错了什么吗?为什么这样做?
答案 0 :(得分:2)
click
事件的jQuery事件处理程序应具有非常特定的签名 - https://api.jquery.com/click/。 jQuery不会调用你的匿名函数传递三个参数。该参数只有一个,它将event
对象。
$("#gbutton").click(function(event) {
var tries1 = $("#guesses").val(),
guess1 = $("#guess").val(),
rnumber1 = $("#rnumber").val() || (Math.floor(Math.random()*500)+1);
check(tries1, guess1, rnumber1);
function check(tries, guess, rnumber) {
if (tries < 1)
return;
var result;
if (guess == rnumber)
result = "You win!";
else if (guess > rnumber)
result = "Too high!";
else if (guess < rnumber)
result = "Too low!";
$("#guesses").val(tries-1);
$("#rnumber").val(rnumber);
$("#result").val(result);
}
});
答案 1 :(得分:1)
您将变量包含在错误的位置。变量(try,guess和rnumber)不应该作为参数传递。见下文:
$(document).ready(function(){
$("#gbutton").click(function() {
tries = $("#guesses").html(),
guess = $("#guess").val(),
rnumber = $("#rnumber").val() || (Math.floor(Math.random()*500)+1);
if (tries < 1) return;
var result;
if (guess == rnumber) result = "You win!";
else if (guess > rnumber) result = "Too high!";
else if (guess < rnumber) result = "Too low!";
$("#guesses").val(tries-1);
$("#rnumber").val(rnumber);
$("#result").val(result);
return;
});
});
在您的代码中,&#39;尝试&#39;被事件覆盖。这就是添加&#39; x&#39;使它工作。因为现在&#39; x&#39;正在被覆盖,你不需要&#39; x&#39;。