Javascript JQuery单击方法错误还是编程错误?
我一直在学习JQuery,但遇到了一个错误Javascript JQuery单击方法错误还是编程错误?,javascript,jquery,Javascript,Jquery,我一直在学习JQuery,但遇到了一个错误 $(document).ready(function(){ $("#gbutton").click(function( tries = $("#guesses").val(), guess = $("#guess").val(), rnumber = $("#rnumber").val() || (Math.f
$(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;
});
});
而且它很有效。在这一点上,我只是感到困惑。我做错了什么?我做错什么了吗?为什么这样做?将变量包含在错误的位置。varstries、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;
});
});
在您的代码中,“尝试”被事件覆盖。这就是为什么加上“x”就可以工作的原因。因为现在“x”被覆盖,您不需要“x”。click事件的jQuery事件处理程序应该具有非常特定的签名-。jQuery不会通过传递三个参数来调用匿名函数。该参数将仅为一个,它将成为事件对象
我被你的“它返回一个对象”语句弄糊涂了。val应该返回一个字符串,但是您应该注意在函数的参数中定义变量的语法是不正确的。一个更完整的逻辑样本和相关的HTML可能会在这里有所帮助。对不起。发生的是$guesss.valtries-1;将原始值更改为NaN。使用console.log检查trys的初始值,表示trys是一个对象。trys、guess和rnumber不是变量,而是它们的参数。我一直都明白,如果没有指定其他参数,函数examplex=10{…}会将10作为默认参数传递。您可以这样设置默认值,但如果传入值,它们将被覆盖。这就是发生在我们身上的事情。它正在被传入的事件处理程序覆盖。那好吧。我对事件对象和它的目的有点困惑,但我不这么理解。非常感谢。
$(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;
});
});
$("#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);
}
});