var change = 1;
$("#game").click(function (e) {
if (change == 1) {
var data = $(e.target).closest("td").text();
var p1 = $("#player1").val();
var p1_value = p1 + data;
$("#player1").val(p1_value);
change = 2;
} else(change == 2) {
var data = $(e.target).closest("td").text();
var p2 = $("#player2").val();
var p2_value = p2 + data;
$("#player2").val(p1_value);
change = 1;
}
});
这是写的写方式吗?顺便说一下,它不会进入else循环。
答案 0 :(得分:1)
如果您打算使用此条件,则else
应为else if
:
if (change == 1) {
// ...
} else if(change == 2) {
// ...
}
作为一个更好的选择,您可以使用jQuery的.toggle()
,并将两个函数传递给点击。
$("#game").toggle(function(e) {
var data = $(e.target).closest("td").text();
var p1 = $("#player1").val();
var p1_value = p1 + data;
$("#player1").val(p1_value);
}, function(e) {
var data = $(e.target).closest("td").text();
var p2 = $("#player2").val();
var p2_value = p2 + data;
$("#player2").val(p1_value);
});
答案 1 :(得分:1)
JavaScript只有function scope,而不是“大括号范围”。如果你想要非常正确,你可以将所有声明放在函数的顶部:
$("#game").click(function(e) {
var data = '',
p1 = '',
p1_value = '',
p2 = '',
p2_value = '';
if (change == 1) {
data = $(e.target).closest("td").text();
p1 = $("#player1").val();
p1_value = p1 + data;
$("#player1").val(p1_value);
change = 2;
}
else if (change == 2) { // you forgot `if`
data = $(e.target).closest("td").text();
p2 = $("#player2").val();
p2_value = p2 + data;
$("#player2").val(p1_value);
change = 1;
}
});
至少JSLint抱怨data
已经定义。
但你可以用另一种方式优化(并缩短!)你的功能:
$("#game").click(function(e) {
var $player = $('#player' + change);
$player.val($player.val() + $(e.target).closest("td").text());
change = (change === 1) ? 2 : 1;
}