Javascript 如何使用jQuery访问属于函数内部另一个函数的对象的属性?

Javascript 如何使用jQuery访问属于函数内部另一个函数的对象的属性?,javascript,jquery,Javascript,Jquery,我正在使用jQuery开发Tic-Tac-Toe游戏。我几乎完成了,但却陷入了困境。如何将代码添加到squareClicked函数的末尾以检查是否有赢家?如果有,我想将bgreen类仅分配给正方形(tds) $('table')。在('click',squareClicked)上; 函数(e){ var$sqr=$(e.target); var player=$('.current player').attr('id'); 如果(!$sqr.attr('class')){ $sqr.addCla

我正在使用jQuery开发Tic-Tac-Toe游戏。我几乎完成了,但却陷入了困境。如何将代码添加到
squareClicked
函数的末尾以检查是否有赢家?如果有,我想将
bgreen
类仅分配给正方形(tds)

$('table')。在('click',squareClicked)上;
函数(e){
var$sqr=$(e.target);
var player=$('.current player').attr('id');
如果(!$sqr.attr('class')){
$sqr.addClass(player+'-marker');
switchPlayer();
}
}
函数getBoard(){
var board=[];
$('td')。每个(函数(){
board.push(this.className[0]);
});
返回板;
}
函数checkWin(){
var board=getBoard();
//可能赢集的数组
var winArray=[
[0, 1, 2], [3, 4, 5], [6, 7, 8],
[0, 3, 6], [1, 4, 7], [2, 5, 8],
[0, 4, 8], [2, 4, 6]];
var winInfo={
赢:错
};
//循环通过可能的赢集
对于(var i=0;i

我调用了
checkWin()
squareClicked
函数中,但它根本不运行。

注意checkWin()返回一个具有3个属性的对象:win、play和winner;将结果分配给一个变量,然后检查胜利的真实性,以确定玩家是否刚刚获胜

function squareClicked(e) {
    var $sqr = $(e.target);
    var player = $('.current-player').attr('id');
    if (!$sqr.attr('class')) {
        $sqr.addClass(player + '-marker');
        switchPlayer();
    }
    var winInfo = checkWin();
    if (winInfo.win) {
        console.log("You won!");
        // do win stuff  here
    }
}

您能告诉我们您是如何调用checkWin()的吗?也许JSFIDLE会有所帮助。您所说的“它根本不运行”是什么意思。您是否收到任何错误消息?是否在全局对象上定义了checkWin()?谢谢。好的,那么想想checkWin的返回值是什么:一个属性为win、play和winner的对象;我假设在本文末尾,您想调用它并将其值赋给一个变量;然后检查win属性的真实性。
function squareClicked(e) {
    var $sqr = $(e.target);
    var player = $('.current-player').attr('id');
    if (!$sqr.attr('class')) {
        $sqr.addClass(player + '-marker');
        switchPlayer();
    }
    var winInfo = checkWin();
    if (winInfo.win) {
        console.log("You won!");
        // do win stuff  here
    }
}
function squareClicked(e) {
    var $sqr = $(e.target);
    var player = $('.current-player').attr('id');
    if (!$sqr.attr('class')) {
        $sqr.addClass(player + '-marker');
        switchPlayer();
    }
    var result = checkWin();
    if (result.win){
       // do something here ...
    }
}