调用id()时意外的令牌)

时间:2013-07-28 04:30:25

标签: javascript function oop

我正在学习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的可靠资源都将不胜感激。

2 个答案:

答案 0 :(得分:1)

{...}定义了一个对象文字,它需要键值对。你看起来更像是一个数组,它由[...]定义。

答案 1 :(得分:1)

这可能就在这里:

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

我不知道你要做什么,但这种语法肯定是不对的。

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

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

尽管使用的确切键取决于函数所期望的内容。

或者也许是数组?

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

您说appendChilds的功能也标记为setAttributes,并且似乎不附加任何子项。你确定没错?