0

我正在学习 OOP,并且我相信我已经精通在尝试使用函数检索值时遇到错误。但这一次我真的被困住了。尝试调用函数时,我不断收到“意外的令牌)id()placeCards()appendChilds()

function GUI(player)
{
    for (var i = 0, j = arguments.length; i <= j; i++)
    {
        var display = document.createElement("div");
        id = function()
        {
            idElem = document.createElement("p");
            idElem.appendChild(document.createTextNode(
                                 player.name == "Player" ? "You" : "Casino"));
            return idElem;
        }

        placeCards = function()
        {
            for (var card = 0, totalCards = player.hand.length;
                 card <= totalCards;
                 card++)
                var cardElem = document.createElement("img");
                setAttributes(cardElem,
                {
                    "id" : (player.name == "Player" ? "player" : "casino")
                           + "Card" + card,
                    "class" : "card",
                    "src" : "images/Cards/Back.png",
                    "alt" : "Back of a card",
                    "title" : "Back of a card"
                });

                return cardElem;
            }
            appendChilds(display, {id(), placeCards()});
            table.appendChild(display);
        }
    }

    player = new Player("Player");
    GUI(player);

我为 appendChilds 构建的辅助函数如下:

function setAttributes(element, attributes)
{ 
    for (var key in attributes) { 
        element.setAttribute(key, attributes[key]); 
    }
}

任何与手头问题相关的帮助或学习 OOP 的可靠资源将不胜感激。

4

2 回答 2

1

{...}定义一个对象字面量,它需要键值对。你所拥有的看起来更像一个数组,它是用[...].

于 2013-07-28T04:33:15.823 回答
1

这里很可能是这样:

appendChilds(display, {id(), placeCards()});

我不知道您要做什么,但是这种语法绝对不正确。

您可能需要一个对象文字,它采用键值对。

appendChilds(display, {
    id: id(),
    cards: placeCards()
});

虽然确切地使用什么键取决于函数的期望。

或者也许是一个数组?

appendChilds(display, [id(), placeCards()]);

你说的那个函数也appendChilds被标记setAttributes了,并且似乎没有附加任何孩子。你确定这是对的?

于 2013-07-28T04:33:38.567 回答